1// RUN: %clang_cc1 -fsyntax-only -verify %s 2 3// PR5061 4namespace a { 5 template <typename T> class C {}; 6} 7namespace b { 8 template<typename T> void f0(a::C<T> &a0) { } 9} 10 11 12namespace test1 { 13 int a = 0; 14 template <class T> class Base { }; 15 template <class T> class Derived : public Base<T> { 16 int foo() { 17 return test1::a; 18 } 19 }; 20} 21 22namespace test2 { 23 class Impl { 24 public: 25 int foo(); 26 }; 27 template <class T> class Magic : public Impl { 28 int foo() { 29 return Impl::foo(); 30 } 31 }; 32} 33 34namespace PR6063 { 35 template <typename T> void f(T, T); 36 37 namespace detail 38 { 39 using PR6063::f; 40 } 41 42 template <typename T> 43 void g(T a, T b) 44 { 45 detail::f(a, b); 46 } 47} 48 49namespace PR12291 { 50 template <typename T> 51 class Outer2 { 52 template <typename V> 53 template <typename W> 54 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}} 55 }; 56} 57