template<unsigned int Len, int Value=0> struct InitNumlist { typedef Numlist<Value, typename InitNumlist<Len-1,Value>::Result> Result; }; template<int Value> struct InitNumlist<0,Value> { typedef NullType Result; };