1 // RUN: %clang_cc1 -verify %s
2
3 template<typename T>
4 struct A {
5 void f();
6 };
7
8 template<typename T>
9 using B = A<T>;
10
11 template<typename T>
f()12 void B<T>::f() { } // expected-warning {{a declarative nested name specifier cannot name an alias template}}
13
14 template<>
f()15 void B<int>::f() { } // ok, template argument list of simple-template-id doesn't involve template parameters
16
17 namespace 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
28 template<typename T>
f()29 void N::E<T>::f() { } // expected-warning {{a declarative nested name specifier cannot name an alias template}}
30