OSDN Git Service

/cp
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / g++.dg / template / memclass3.C
1 // PR c++/17132
2
3 template <typename T>
4 struct has_deref
5 {
6     struct impl
7     {
8         template <
9             typename Type,
10             typename Type::reference (Type::*Func)(void) const>
11         struct func_tag;
12
13         template <typename Type>
14         static char (& test(
15             Type *,
16             func_tag<Type, &Type::operator*> * = 0
17         ))[2];
18         static char test(void *);
19     };
20
21     static const bool value = (sizeof(impl::test((T *) 0)) == 2);
22 };
23
24 template <typename T>
25 struct container
26 {
27     struct iterator
28     {
29         typedef T & reference;
30         reference operator*() const;
31     };
32 };
33
34 int main()
35 {
36     typedef container<int>::iterator iter;
37     int result = has_deref<iter>::value;
38     return result;
39 }