30 lines · cpp
1// RUN: %clang_cc1 -verify %s2 3template<typename T>4struct A {5 void f();6};7 8template<typename T>9using B = A<T>;10 11template<typename T>12void B<T>::f() { } // expected-warning {{a declarative nested name specifier cannot name an alias template}}13 14template<>15void B<int>::f() { } // ok, template argument list of simple-template-id doesn't involve template parameters16 17namespace N {18 19 template<typename T>20 struct D {21 void f();22 };23 24 template<typename T>25 using E = D<T>;26}27 28template<typename T>29void N::E<T>::f() { } // expected-warning {{a declarative nested name specifier cannot name an alias template}}30