53 lines
945 B
C++
53 lines
945 B
C++
/* -*- C++ -*- */
|
|
namespace DebugCXX {
|
|
// Records.
|
|
struct Struct {
|
|
int i;
|
|
static int static_member;
|
|
};
|
|
|
|
// Enums.
|
|
enum Enum {
|
|
Enumerator
|
|
};
|
|
enum {
|
|
e1 = '1'
|
|
};
|
|
enum {
|
|
e2 = '2'
|
|
};
|
|
|
|
// Templates (instatiations).
|
|
template<typename T> struct traits {};
|
|
template<typename T,
|
|
typename Traits = traits<T>
|
|
> class Template {
|
|
T member;
|
|
};
|
|
extern template class Template<int>;
|
|
|
|
extern template struct traits<float>;
|
|
typedef class Template<float> FloatInstatiation;
|
|
|
|
inline void fn() {
|
|
Template<long> invisible;
|
|
}
|
|
|
|
// Non-template inside a template.
|
|
template <class> struct Outer {
|
|
Outer();
|
|
struct Inner {
|
|
Inner(Outer) {}
|
|
};
|
|
};
|
|
template <class T> Outer<T>::Outer() {
|
|
Inner a(*this);
|
|
};
|
|
|
|
// Partial template specialization.
|
|
template <typename...> class A;
|
|
template <typename T> class A<T> {};
|
|
typedef A<void> B;
|
|
void foo(B) {}
|
|
}
|