#!/usr/bin/env /friends/bin/cxxscript // cf. http://labs.cybozu.co.jp/blog/kazuho/archives/2008/04/fizzbuzz_cpp_template.php #include using namespace std; template struct Print { Print() { cout << N << endl; } }; template struct Print { Print() { cout << "FizzBuzz" << endl; } }; template struct Print { Print() { cout << "Fizz" << endl; } }; template struct Print { Print() { cout << "Buzz" << endl; } }; template struct FizzBuzz { FizzBuzz() { FizzBuzz(); Print(); } }; template<> struct FizzBuzz<0> { FizzBuzz() {} }; int main() { FizzBuzz<30>(); }