1つだけではなく、値の範囲に基づいてテンプレートを特殊化する方法はありますか?次のコードは有効なC++コードではないことは知っていますが、それは私がやりたいことを示しています。私は8ビットマシン用のコードを書いているので、intとcharを使用する場合の速度に違いがあります。
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
};