1 // PR c++/42013 2 3 template<typename _Tp> 4 _Tp 5 __attribute ((const)) declval(); 6 7 template<typename _Tp, typename _Up> 8 struct common_type 9 { 10 typedef __decltype(true ? declval<_Tp>() : declval<_Up>()) typet; 11 typedef __decltype(false ? declval<_Tp>() : declval<_Up>()) typef; 12 }; 13 14 template<typename, typename> struct is_same; 15 16 template<typename _Tp> struct is_same<_Tp, _Tp> { typedef _Tp type; }; 17 18 void f() 19 { 20 typedef common_type<int, const int>::typet typet; 21 typedef common_type<int, const int>::typef typef; 22 23 typedef is_same<typet, typef>::type type; 24 } 25