ただ1つではなく、ある範囲の値に基づいてテンプレートの特殊化を行う方法はありますか?私は次のコードは有効なC + +コードではないが、私は何をしたいのかを示しています。私は8ビットマシン用のコードを書いているので、intとcharを使う速度に違いがあります。整数値の範囲に対してC++テンプレートを特殊化するにはどうすればよいですか?
template<unsigned SIZE>
class circular_buffer {
unsigned char buffer[SIZE];
unsigned int head; // index
unsigned int tail; // index
};
template<unsigned SIZE <= 256>
class circular_buffer {
unsigned char buffer[SIZE];
unsigned char head; // index
unsigned char tail; // index
};
私はこれが便利だと言っています。 – chris
'std :: conditional'のような特性は自分自身を書くのは簡単なことではないので、本当にライブラリを必要としないのであれば、本当に必要はありません:' template struct conditional {typedef T type; };テンプレート<タイプ名T、タイプ名U>構造体 {typedef Uタイプ; }; ' –
乾杯@ KerrekSB、私は答えに加えました。 – jrok