// RUN: %clang -emit-llvm -g -S %s -o - | FileCheck %s
//CHECK: TC<int>
//CHECK: DW_TAG_template_type_parameter
template<typename T>
class TC {
public:
TC(const TC &) {}
TC() {}
};
TC<int> tci;
//CHECK: TU<2>
//CHECK: DW_TAG_template_value_parameter
template<unsigned >
class TU {
int b;
};
TU<2> u2;
// PR9600
template<typename T> class vector {};
class Foo;
typedef vector<Foo*> FooVector[3];
struct Test {
virtual void foo(FooVector *);
};
static Test test;
// PR9608
template <int i> struct TheTemplate {
struct Empty2 {};
typedef const Empty2 DependentType[i];
TheTemplate() {}
};
class TheTemplateTest : public TheTemplate<42> {
TheTemplateTest();
void method(const TheTemplate<42>::DependentType *) {}
};
TheTemplateTest::TheTemplateTest() : TheTemplate<42>() {}