28 lines
366 B
C++
28 lines
366 B
C++
#include<iostream>
|
|
|
|
template<int n>
|
|
struct Nat {
|
|
enum { val = 1 + Nat<n-1>::val };
|
|
};
|
|
|
|
template<>
|
|
struct Nat<0> {
|
|
enum { val = 0 };
|
|
};
|
|
|
|
/*
|
|
* 'class' has variables 'private' by default. 'struct' has it 'public'. More
|
|
* convenient here.
|
|
*/
|
|
|
|
int main() {
|
|
std::cout << Nat<2>::val << std::endl;
|
|
std::cout << Nat<23>::val << std::endl;
|
|
}
|
|
|
|
// Output
|
|
/*
|
|
2
|
|
23
|
|
*/
|