整数型での特殊化

id:y-hamigaki:20060626 で書いたように、int_leastN_tでテンプレートを特殊化する場合、環境によってはtypedef先の型が重複しているため特殊化できない場合があります。
なので、型ではなく、ビット数をテンプレート引数にとるようにしてみます。

template<std::size_t Bits, class Device>
class wide_int_adaptor
{
public:
    typedef typename boost::int_t<Bits>::least char_type;

    // ...
};

ただし、大抵の環境では8/16/32/64ビット整数が使用できるので、簡易形式としてwide_adaptor<boost::intN_t,Device>も使用できるようにしておきます。


と、書いているうちに別の方法を思いつきました。
要は正確なビット数を指定できれば良いので、テンプレート引数にboost::int_t<Bits>を使うのはどうでしょう。

template<std::size_t Bits, class Device>
class wide_adaptor<boost::int_t<Bits>, Device>
{
public:
    typedef typename boost::int_t<Bits>::least char_type;

    // ...
};

これでいい気がしてきました。