template <class T, int N, int P> class Math2{ public : static T pascal(){ return Math2<T, N-1, P-1>::pascal()+Math2<T, N, P-1>::pascal(); } }; template <class T, int N> class Math2<T, N, 0>{ public : static T pascal(){ return 0; } }; template <class T, int N> class Math2<T, 0, N>{ public : static T pascal(){ return 0; } }; template <class T> class Math2<T, 1, 1>{ public : static T pascal(){ return 1; } };