diff options
Diffstat (limited to 'test/Parser/using-template.cpp')
-rw-r--r-- | test/Parser/using-template.cpp | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/test/Parser/using-template.cpp b/test/Parser/using-template.cpp new file mode 100644 index 0000000000..686873d60b --- /dev/null +++ b/test/Parser/using-template.cpp @@ -0,0 +1,52 @@ +// RUN: %clang_cc1 %s -verify + +namespace N1 { +template <typename... Ts> +struct Foo { + template <typename T> + struct Bar { + static constexpr bool is_present = false; + }; +}; + +template <typename T, typename... Ts> +struct Foo<T, Ts...> : public Foo<Ts...> { + using template Foo<Ts...>::Bar; + // expected-error@-1 {{'template' keyword not permitted after 'using' keyword}} +}; +} + +namespace N2 { +namespace foo { + using I = int; +} +using template namespace foo; +// expected-error@-1 {{'template' keyword not permitted after 'using' keyword}} +using template template namespace foo; +// expected-error@-1 2{{'template' keyword not permitted after 'using' keyword}} +I i; +} + +namespace N3 { +namespace foo { + using I = int; +} +using template foo::I; +// expected-error@-1 {{'template' keyword not permitted after 'using' keyword}} +I i; +} + +namespace N4 { +template <typename T> +class A {}; + +template <typename T> +using B = A<T>; +B<int> b; + +using template <typename T> C = A<T>; +// expected-error@-1 {{'template' keyword not permitted after 'using' keyword}} +// expected-error@-2 {{expected unqualified-id}} +C<int> c; +// expected-error@-1 {{no template named 'C'}} +} |