diff options
Diffstat (limited to 'test/CXX/temp/temp.fct.spec/temp.deduct/sfinae-1.cpp')
-rw-r--r-- | test/CXX/temp/temp.fct.spec/temp.deduct/sfinae-1.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/test/CXX/temp/temp.fct.spec/temp.deduct/sfinae-1.cpp b/test/CXX/temp/temp.fct.spec/temp.deduct/sfinae-1.cpp new file mode 100644 index 000000000000..d193fb2ef296 --- /dev/null +++ b/test/CXX/temp/temp.fct.spec/temp.deduct/sfinae-1.cpp @@ -0,0 +1,17 @@ +// RUN: clang-cc %s + +typedef char one_byte; +struct two_bytes { char data[2]; }; + +template<typename T> one_byte __is_class_check(int T::*); +template<typename T> two_bytes __is_class_check(...); + +template<typename T> struct is_class { + static const bool value = sizeof(__is_class_check<T>(0)) == 1; +}; + +struct X { }; + +int array0[is_class<X>::value? 1 : -1]; +int array1[is_class<int>::value? -1 : 1]; +int array2[is_class<char[3]>::value? -1 : 1]; |