#include template struct fizzbuzz : fizzbuzz { fizzbuzz() { std::cout << n << std::endl; } }; template struct fizzbuzz : fizzbuzz { fizzbuzz() { std::cout << "FizzBuzz" << std::endl; } }; template struct fizzbuzz : fizzbuzz { fizzbuzz() { std::cout << "Fizz" << std::endl; } }; template struct fizzbuzz : fizzbuzz { fizzbuzz() { std::cout << "Buzz" << std::endl; } }; template <> struct fizzbuzz<0,0,0> { fizzbuzz() { std::cout << 0 << std::endl; } }; template struct fb_run { fizzbuzz fb; }; int main() { fb_run<100> fb; return 0; }