// 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}} | |
}; | |
} |