fork download
  1. #include <iostream>
  2. template<int N, int N3 = N % 3, int N5 = N % 5>
  3. struct fizzbuzz {
  4. static int value() {
  5. return N;
  6. }
  7. };
  8.  
  9. template<int N, int N5>
  10. struct fizzbuzz<N,0,N5> {
  11. static const char* value() {
  12. return "Fizz";
  13. }
  14. };
  15.  
  16. template<int N, int N3>
  17. struct fizzbuzz<N,N3,0> {
  18. static const char* value() {
  19. return "Buzz";
  20. }
  21. };
  22.  
  23. template<int N>
  24. struct fizzbuzz<N,0,0> {
  25. static const char* value() {
  26. return "FizzBuzz";
  27. }
  28. };
  29.  
  30. template<int i>
  31. struct loop {
  32. static inline void execute() {
  33. std::cout << fizzbuzz<i>::value() << "\n";
  34. loop<i-1>::execute();
  35. }
  36. };
  37.  
  38. template<>
  39. struct loop<1> {
  40. static inline void execute() {
  41. std::cout << fizzbuzz<1>::value() << "\n";
  42. }
  43. };
  44.  
  45. int main() {
  46. loop<100>::execute();
  47. }
Success #stdin #stdout 0s 2856KB
stdin
Standard input is empty
stdout
Buzz
Fizz
98
97
Fizz
Buzz
94
Fizz
92
91
FizzBuzz
89
88
Fizz
86
Buzz
Fizz
83
82
Fizz
Buzz
79
Fizz
77
76
FizzBuzz
74
73
Fizz
71
Buzz
Fizz
68
67
Fizz
Buzz
64
Fizz
62
61
FizzBuzz
59
58
Fizz
56
Buzz
Fizz
53
52
Fizz
Buzz
49
Fizz
47
46
FizzBuzz
44
43
Fizz
41
Buzz
Fizz
38
37
Fizz
Buzz
34
Fizz
32
31
FizzBuzz
29
28
Fizz
26
Buzz
Fizz
23
22
Fizz
Buzz
19
Fizz
17
16
FizzBuzz
14
13
Fizz
11
Buzz
Fizz
8
7
Fizz
Buzz
4
Fizz
2
1