整数型での特殊化
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; // ... };
これでいい気がしてきました。