// RUN: %clang_cc1 -fsyntax-only -verify %s template struct A { void f(T); template void g1(T, X1); template void g2(T, X2); void h(T) { } }; // specialization template<> void A::f(int); // out of class member template definition template template void A::g1(T, X1) { } // member template specialization template<> template void A::g1(int, X1); // member template specialization template<> template<> void A::g1(int, char); // X1 deduced as char template<> template<> void A::g2(int, char); // X2 specified as char // member specialization even if defined in class definition template<> void A::h(int) { } namespace PR10024 { template struct Test{ template void get(U i) {} }; template template <> void Test::get(double i) {} // expected-error{{cannot specialize (with 'template<>') a member of an unspecialized template}} }