| #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 | |
| } | |