¿Hay alguna manera de tener una especialización de plantilla basada en un rango de valores en lugar de solo uno? Sé que el siguiente código no es válido código C++, pero muestra lo que me gustaría hacer. Estoy escribiendo código para una máquina de 8 bits, por lo que hay una diferencia en la velocidad para usar ints y caracteres.¿Cómo puedo especializar una plantilla de C++ para un rango de valores enteros?
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
};
Tengo que decir, esto es útil. – chris
Un rasgo como 'std :: conditional' es trivial para escribir usted mismo, por lo que realmente no necesita ninguna biblioteca si no la tiene:' template struct conditional {typedef T type; }; template struct conditional {typedef U type; }; ' –
Cheers @KerrekSB, lo agregué a la respuesta. – jrok