1 // PR c++/64970 2 // { dg-do compile { target c++11 } } 3 4 template<typename T> 5 T && declval(); 6 7 template<typename T> 8 struct void_ { using type = void; }; 9 10 template<typename T> 11 using void_t = typename void_<T>::type; 12 13 template<class A, class B> 14 struct Outer 15 { 16 template<class C, class D> 17 using Inner = decltype(true ? declval<C>() : declval<D>()); 18 }; 19 20 template<class A, class B, typename Enable = void> 21 struct S 22 {}; 23 24 template<class A, class B> 25 struct S<A, B, void_t<typename Outer<A, B>::template Inner<A, B>>> 26 {}; 27 28 struct A{}; 29 struct B{}; 30 int main() 31 { 32 S<A, B> s; 33 } 34