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