Mercurial > hg > CbC > CbC_gcc
diff gcc/testsuite/g++.dg/cpp0x/sfinae63.C @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gcc/testsuite/g++.dg/cpp0x/sfinae63.C Thu Oct 25 07:37:49 2018 +0900 @@ -0,0 +1,39 @@ +// PR c++/61806 +// { dg-do compile { target c++11 } } + +struct true_type +{ + static const bool value = true; +}; + +struct false_type +{ + static const bool value = false; +}; + +template<class T> +T&& declval(); + +template<typename> struct check { typedef void type; }; + +template<typename T, typename Enable = void> +struct has_public_f : false_type {}; + +template<typename T> +struct has_public_f< + T, + typename check< + decltype( + declval<T&>().f() + ) + >::type +> : true_type {}; + + +struct Spub { public: void f(); }; +struct Spriv { private: void f(); }; + +static_assert( has_public_f<Spub>::value, "Ouch"); +static_assert(!has_public_f<Spriv>::value, "Ouch"); + +int main() {}