#include template struct Z { Z() { std::cout << i; } }; template struct Y { Z<'0'+i/10> ZZ; Z<'0'+i%10> ZZZ; Y() { std::cout << "\n"; } }; template struct Y { Y() { std::cout << "buzz\n"; } }; template struct Y { Y() { std::cout << "fizz\n"; } }; template struct Y { Y() { std::cout << "fizzbuzz\n"; } }; template struct X : public X{ struct Y y; }; template<> struct X<0> {}; X<100> x; int main(void) { return 0; }