| // RUN: %clang_cc1 -fsyntax-only -verify %s |
| |
| // PR5061 |
| namespace a { |
| template <typename T> class C {}; |
| } |
| namespace b { |
| template<typename T> void f0(a::C<T> &a0) { } |
| } |
| |
| |
| namespace test1 { |
| int a = 0; |
| template <class T> class Base { }; |
| template <class T> class Derived : public Base<T> { |
| int foo() { |
| return test1::a; |
| } |
| }; |
| } |
| |
| namespace test2 { |
| class Impl { |
| public: |
| int foo(); |
| }; |
| template <class T> class Magic : public Impl { |
| int foo() { |
| return Impl::foo(); |
| } |
| }; |
| } |
| |
| namespace PR6063 { |
| template <typename T> void f(T, T); |
| |
| namespace detail |
| { |
| using PR6063::f; |
| } |
| |
| template <typename T> |
| void g(T a, T b) |
| { |
| detail::f(a, b); |
| } |
| } |
| |
| namespace PR12291 { |
| template <typename T> |
| class Outer2 { |
| template <typename V> |
| template <typename W> |
| class Outer2<V>::Inner; // expected-error{{nested name specifier 'Outer2<V>::' for declaration does not refer into a class, class template or class template partial specialization}} |
| }; |
| } |