blob: 686873d60b8492d69ab3a03ff4a2916d185b8956 [file] [log] [blame]
Richard Trieu2efd3052019-05-01 23:33:49 +00001// RUN: %clang_cc1 %s -verify
2
3namespace N1 {
4template <typename... Ts>
5struct Foo {
6 template <typename T>
7 struct Bar {
8 static constexpr bool is_present = false;
9 };
10};
11
12template <typename T, typename... Ts>
13struct Foo<T, Ts...> : public Foo<Ts...> {
14 using template Foo<Ts...>::Bar;
15 // expected-error@-1 {{'template' keyword not permitted after 'using' keyword}}
16};
17}
18
19namespace N2 {
20namespace foo {
21 using I = int;
22}
23using template namespace foo;
24// expected-error@-1 {{'template' keyword not permitted after 'using' keyword}}
25using template template namespace foo;
26// expected-error@-1 2{{'template' keyword not permitted after 'using' keyword}}
27I i;
28}
29
30namespace N3 {
31namespace foo {
32 using I = int;
33}
34using template foo::I;
35// expected-error@-1 {{'template' keyword not permitted after 'using' keyword}}
36I i;
37}
38
39namespace N4 {
40template <typename T>
41class A {};
42
43template <typename T>
44using B = A<T>;
45B<int> b;
46
47using template <typename T> C = A<T>;
48// expected-error@-1 {{'template' keyword not permitted after 'using' keyword}}
49// expected-error@-2 {{expected unqualified-id}}
50C<int> c;
51// expected-error@-1 {{no template named 'C'}}
52}