URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [gcc/] [testsuite/] [g++.dg/] [template/] [sfinae4.C] - Rev 695
Go to most recent revision | Compare with Previous | Blame | View Log
// DR 339//// Test of the use of free functions with SFINAEvoid foo(int) { }template<typename T> void foo(T*) { }typedef char yes_type;struct no_type { char data[2]; };template<typename T> T create_a();template<bool, typename T = void> struct enable_if { typedef T type; };template<typename T> struct enable_if<false, T> { };template<typename T>typename enable_if<(sizeof(foo(create_a<T const&>()), 1) > 0),yes_type>::typecheck_has_foo(const volatile T&);no_type check_has_foo(...);template<typename T>struct has_foo{static const bool value =(sizeof(check_has_foo(create_a<T const&>())) == sizeof(yes_type));};struct X { };int a1[has_foo<int>::value? 1 : -1];int a2[has_foo<long>::value? 1 : -1];int a3[has_foo<int*>::value? 1 : -1];int a4[has_foo<X>::value? -1 : 1];int a5[has_foo<int X::*>::value? -1 : 1];
Go to most recent revision | Compare with Previous | Blame | View Log
