1 // DR 1558 still applies when using void_t as a template-argument. 2 // { dg-do compile { target c++11 } } 3 4 template<typename...> using void_t = void; 5 template<class T> struct A { }; 6 struct B { typedef int foo; }; 7 template<typename T> A<void_t<typename T::foo>> f(); // { dg-error "int" } 8 template<typename T> A<void> g(); main()9int main() 10 { 11 f<B>(); 12 g<int>(); 13 f<int>(); // { dg-error "no match" } 14 } 15