1 // PR c++/33964 2 3 template<typename T> 4 struct X { }; 5 6 template<typename T> 7 struct X<typename T::foo> { }; // { dg-error "not deducible|T" } 8 9 template<int N> 10 struct X<int[N]> {}; // okay 11 12 13 template<typename T, typename T::foo V> 14 struct Y { }; 15 16 template<typename T, typename U, U v> 17 struct Y<T, v> { }; // { dg-error "" } 18 19 20 template<typename T, T V> 21 struct Z { }; 22 23 template<typename T> 24 struct Z<T, (T)0> { }; // { dg-error "13:template argument" } 25