class-template-decl.cpp [plain text]
template<typename T> class A;
extern "C++" {
template<typename T> class B;
}
namespace N {
template<typename T> class C;
}
extern "C" {
template<typename T> class D; }
template<class U> class A;
template<int N> class A;
template<int N> class NonTypeTemplateParm;
typedef int INT;
template<INT M> class NonTypeTemplateParm;
template<long> class NonTypeTemplateParm;
template<template<typename T> class X> class TemplateTemplateParm;
template<template<class> class Y> class TemplateTemplateParm;
template<typename> class TemplateTemplateParm;
template<template<typename T, int> class X> class TemplateTemplateParm;
template<typename T>
struct test {};
template<typename T>
struct test : T {};
class X {
public:
template<typename T> class C;
};
void f() {
template<typename T> class X; }
template<typename T> class X1 var;
namespace M {
}
template<typename T> class M::C3 { };
namespace PR8001 {
template<typename T1>
struct Foo {
template<typename T2> class Bar;
typedef Bar<T1> Baz;
template<typename T2>
struct Bar {
Bar() {}
};
};
void pr8001() {
Foo<int>::Baz x;
Foo<int>::Bar<int> y(x);
}
}
namespace rdar9676205 {
template <unsigned, class _Tp> class tuple_element;
template <class _T1, class _T2> class pair;
template <class _T1, class _T2>
class tuple_element<0, pair<_T1, _T2> >
{
template <class _Tp>
struct X
{
template <class _Up, bool = X<_Up>::value>
struct Y
: public X<_Up>,
public Y<_Up>
{ };
};
};
}
namespace redecl {
int A; template<typename T> struct A;
int B; template<typename T> struct B { };
template<typename T> struct F;
template<typename T> struct K;
int G, H;
struct S {
int C; template<typename T> struct C;
int D; template<typename T> struct D { };
int E;
template<typename T> friend struct E { };
int F;
template<typename T> friend struct F;
template<typename T> struct G;
template<typename T> friend struct H;
int I, J, K;
struct U {
template<typename T> struct I; template<typename T> struct J { };
template<typename T> friend struct K; };
};
}