diff options
Diffstat (limited to 'gcc/testsuite/g++.dg/cpp0x/decltype19.C')
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/decltype19.C | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/gcc/testsuite/g++.dg/cpp0x/decltype19.C b/gcc/testsuite/g++.dg/cpp0x/decltype19.C new file mode 100644 index 000000000..41d602f34 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp0x/decltype19.C @@ -0,0 +1,24 @@ +// PR c++/42013 + +template<typename _Tp> + _Tp +__attribute ((const)) declval(); + +template<typename _Tp, typename _Up> + struct common_type + { + typedef __decltype(true ? declval<_Tp>() : declval<_Up>()) typet; + typedef __decltype(false ? declval<_Tp>() : declval<_Up>()) typef; + }; + +template<typename, typename> struct is_same; + +template<typename _Tp> struct is_same<_Tp, _Tp> { typedef _Tp type; }; + +void f() +{ + typedef common_type<int, const int>::typet typet; + typedef common_type<int, const int>::typef typef; + + typedef is_same<typet, typef>::type type; +} |