#include <iostream> | |
template<typename DATA> | |
struct ATB | |
{ | |
int data; | |
ATB() : data(0) {} | |
}; | |
template<typename DATA, | |
typename DerivedType > | |
class A : public ATB<DATA> | |
{ | |
public: | |
static DerivedType const DEFAULT_INSTANCE; | |
}; | |
template<typename DATA, typename DerivedType> | |
const DerivedType A<DATA, DerivedType>::DEFAULT_INSTANCE; | |
class B : public A<int, B> | |
{ | |
}; | |
int main() | |
{ | |
B b; | |
// If this if-block is removed then GDB shall | |
// not infinitely recurse when trying to print b. | |
return 0; // marker | |
} | |