#include<iostream> using namespace std; enum class Int: unsigned char { Zero=0, One, Two, Five=5}; template<int N> int frac(){ return N*frac<N-1>(); } template<> int frac<1>(){ return static_cast<int>(Int::One); } int main(){ cout << frac<3>() <<endl; }