language: C++11 (gcc-4.7.2)
date: 308 days 11 hours ago
link:
visibility: public
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    #include <iostream>
 
    template <int N>
    struct Factorial {
        enum { value = N * Factorial<N - 1>::value };
    };
     
    template <>
    struct Factorial<0> {
        enum { value = 1 };
    };
 
    int main()
    {
        auto const f10 = Factorial<10>::value; // done at compile-time
        std::cout << f10 << "\n";              // prints 3628800
 
        return 0;
    }