¿Es posible tener un simple especialización de plantilla en función del rango sin necesidad de impulso fundación.
No es para C++ 03 de una manera muy elegante, conciso, fácil de mantener y genérica, donde arbitrariamente grandes rangos se pueden especificar fácilmente. Para mantener el código conciso, necesitaría algo como la biblioteca del preprocesador de impulso para recorrer un rango de valores.
Sans BOOST o volviendo a implementar grandes cantidades de él, puede crear algunas pequeñas macros tristes para llamar a la macro inicial para un número específico de valores consecutivos. Por ejemplo:
#define X(N) template <> class Param<N> { ... };
#define X2(N) X(N) X(N+1)
#define X4(N) X2(N) X2(N+2)
#define X8(N) X4(N) X4(N+4)
...
// template <> class Param<100 to 175> then becomes
X64(100); // 100..163
X8(164); // 164..171
X4(172); // 172..175
Como alternativa, se puede usar un programa/script para escribir el código C++, como un paso de compilación anterior, a veces eso funciona mejor - a veces peor - que hackery preprocesador.
Aún mejor. ¡Muchas gracias! – Ram
Ah, genial. Aunque en realidad la única diferencia es que tienes que escribir '(x
Es bueno que esta pregunta ahora tenga ambas formas de hacerlo para futuros visitantes. + 1 por cierto. –