Viewing file: var-templ43.C (1.11 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
// PR c++/67130 // { dg-do compile { target c++14 } }
namespace std { template <typename> struct __success_type; template <typename> void declval(); template <typename> class decay { public: typedef int type; }; template <typename...> struct common_type; struct A { template <typename, typename _Up> static __success_type<typename decay<decltype(declval<_Up>)>::type> _S_test; }; template <typename _Tp, typename _Up> struct __common_type_impl : A { typedef decltype(_S_test<_Tp, _Up>) type; }; template <typename _Tp, typename _Up> struct common_type<_Tp, _Up> : __common_type_impl<_Tp, _Up> {}; } template <typename> struct B { struct _; }; template <typename T> typename B<T>::_ type; template <template <typename...> class> struct C; template <template <typename...> class f> C<f> metafunction; template <typename T> struct B<T>::_ {}; namespace detail { template <typename> struct _decltype; } template <template <typename...> class F> struct C { template <typename... T> auto operator()(T...) -> decltype(type<typename F<detail::_decltype<T>...>::type>); }; auto common_type = metafunction<std::common_type>(0, 0);
|