66 lines
1.4 KiB
C
66 lines
1.4 KiB
C
|
template<typename T> class Vector;
|
||
|
|
||
|
template<typename T> class List {
|
||
|
public:
|
||
|
void push_back(T);
|
||
|
|
||
|
struct node {};
|
||
|
node *head;
|
||
|
unsigned size;
|
||
|
};
|
||
|
|
||
|
extern List<double> *instantiateListDoubleDeclaration;
|
||
|
extern List<long> *instantiateListLongDeclaration;
|
||
|
|
||
|
namespace A {
|
||
|
class Y {
|
||
|
template <typename T> friend class WhereAmI;
|
||
|
};
|
||
|
}
|
||
|
|
||
|
template <typename T> class A::WhereAmI {
|
||
|
public:
|
||
|
static void func() {}
|
||
|
};
|
||
|
|
||
|
template<typename T> struct Outer {
|
||
|
struct Inner {};
|
||
|
};
|
||
|
|
||
|
template<bool, bool> struct ExplicitInstantiation {
|
||
|
void f() {}
|
||
|
};
|
||
|
|
||
|
template<typename> struct DelayUpdates {};
|
||
|
|
||
|
template<typename T> struct OutOfLineInline {
|
||
|
void f();
|
||
|
void g();
|
||
|
void h();
|
||
|
};
|
||
|
template<typename T> inline void OutOfLineInline<T>::f() {}
|
||
|
template<typename T> inline void OutOfLineInline<T>::g() {}
|
||
|
template<typename T> inline void OutOfLineInline<T>::h() {}
|
||
|
|
||
|
namespace EmitDefaultedSpecialMembers {
|
||
|
template<typename T> struct SmallVectorImpl {
|
||
|
SmallVectorImpl() {}
|
||
|
~SmallVectorImpl() {} // non-trivial dtor
|
||
|
};
|
||
|
template<typename T, unsigned N> struct SmallVector : SmallVectorImpl<T> {
|
||
|
// trivial dtor
|
||
|
};
|
||
|
template<unsigned N> struct SmallString : SmallVector<char, N> {
|
||
|
// trivial dtor
|
||
|
};
|
||
|
}
|
||
|
|
||
|
template<typename T> struct WithUndefinedStaticDataMember {
|
||
|
static T undefined;
|
||
|
};
|
||
|
|
||
|
template<typename T> struct __attribute__((packed, aligned(2))) WithAttributes {
|
||
|
T value;
|
||
|
};
|
||
|
WithAttributes<int> *get_with_attributes();
|