Mercurial > hg > CbC > CbC_llvm
diff clang/test/Parser/using-template.cpp @ 150:1d019706d866
LLVM10
author | anatofuz |
---|---|
date | Thu, 13 Feb 2020 15:10:13 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/clang/test/Parser/using-template.cpp Thu Feb 13 15:10:13 2020 +0900 @@ -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'}} +}