template<>structC<float>;// expected-error {{not in class 'A' or an enclosing namespace}}
template<>voidf<float>();// expected-error {{no function template matches}}
template<>staticintN<float>;// expected-error {{not in class 'A' or an enclosing namespace}}
template<typenameT>structC<T**>;// expected-error {{not in class 'A' or an enclosing namespace}}
template<typenameT>staticintN<T**>;// expected-error {{not in class 'A' or an enclosing namespace}}
template<>structA::C<double>;// expected-error {{not in class 'A' or an enclosing namespace}}
template<>voidA::f<double>();// expected-error {{no function template matches}} expected-error {{cannot have a qualified name}}
template<>staticintA::N<double>;// expected-error {{not in class 'A' or an enclosing namespace}} expected-error {{cannot have a qualified name}}
template<typenameT>structA::C<T***>;// expected-error {{not in class 'A' or an enclosing namespace}}
template<typenameT>staticintA::N<T***>;// expected-error {{not in class 'A' or an enclosing namespace}} expected-error {{cannot have a qualified name}}
};
};
template<>structA::C<char>;
template<>voidA::f<char>();
template<>intA::N<char>;
template<typenameT>structA::C<T****>;
template<typenameT>intA::N<T****>;
namespaceC{
template<>structA::C<long>;// expected-error {{not in class 'A' or an enclosing namespace}}
template<>voidA::f<long>();// expected-error {{not in class 'A' or an enclosing namespace}}
template<>intA::N<long>;// expected-error {{not in class 'A' or an enclosing namespace}}
template<typenameT>structA::C<T*****>;// expected-error {{not in class 'A' or an enclosing namespace}}
template<typenameT>intA::N<T*****>;// expected-error {{not in class 'A' or an enclosing namespace}}