template <class T, int N> class Math{ public : static T factorielle(){ T a=N; return Math<T, N-1>::factorielle()*a; } }; template <class T> class Math<T, 0>{ public : static T factorielle(){ T a=1; return a; } };