Mercurial > hg > CbC > CbC_gcc
comparison gcc/testsuite/g++.dg/template/sfinae27.C @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
68:561a7518be6b | 111:04ced10e8804 |
---|---|
1 // Origin: PR c++/46162 | |
2 | |
3 struct small_type { char dummy; }; | |
4 struct large_type { char dummy[2]; }; | |
5 | |
6 template<class T> | |
7 struct has_foo_member_variable | |
8 { | |
9 template<int T::*> struct tester; | |
10 template<class U> static small_type has_foo(tester<&U::foo> *); | |
11 template<class U> static large_type has_foo(...); | |
12 static const bool value = (sizeof(has_foo<T>(0)) == sizeof(small_type)); | |
13 }; | |
14 | |
15 struct A | |
16 { | |
17 static int foo() | |
18 { | |
19 return 0; | |
20 } | |
21 }; | |
22 | |
23 struct B | |
24 { | |
25 static int foo; | |
26 }; | |
27 | |
28 void | |
29 bar() | |
30 { | |
31 bool b = has_foo_member_variable<A>::value; | |
32 } | |
33 |