10以下の任意の基数の定数を使うためのテンプレート。

template<unsigned long long num, unsigned base> struct numeral {
enum { value = num%10 + (numeral<num/10, base>::value * base)};
};

template<unsigned base> struct numeral<0, base> {
enum {value = 0};
};


例えば、numeral<101000,2>::value のように書いて2進定数が使える。