diff options
Diffstat (limited to 'gcc-4.9/gcc/testsuite/g++.dg/cpp0x/dependent1.C')
-rw-r--r-- | gcc-4.9/gcc/testsuite/g++.dg/cpp0x/dependent1.C | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/dependent1.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/dependent1.C new file mode 100644 index 000000000..629b125f5 --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/dependent1.C @@ -0,0 +1,25 @@ +// PR c++/48319 +// { dg-do compile { target c++11 } } +// We were failing to recognize declval<_Args1> as dependent. + +template<typename Tp> Tp declval() noexcept; + +template<typename _Tp> +class __is_constructible_helper +{ + typedef char __one; + typedef struct { char __arr[2]; } __two; + + template<typename _Tp1, typename... _Args1> + static decltype(_Tp1(declval<_Args1>()...), __one()) __test(int); + + template<typename, typename...> + static __two __test(...); + +public: + static const bool __value = sizeof(__test<_Tp>(0)) == 1; +}; + +int main() { + return __is_constructible_helper<int>::__value; +} |