Necesita poder alterar los argumentos de la plantilla
template <std::string temp>
void f() {
// ...
}
f<"foo">();
f<"bar">(); // different function!?
Ahora, un impl tendría que crear una secuencia única de caracteres para una std::string
o, para el caso, cualquier otra clase arbitraria definida por el usuario, almacenando un valor particular, cuyo significado no es conocido por la implementación. Además, el valor de los objetos de clase arbitrarios no se puede calcular en el momento de la compilación.
Se planea considerar la posibilidad de permitir tipos de clases literales como tipos de parámetros de plantilla para post-C ++ 0x, que se inicializan mediante expresiones constantes. Aquellos se pueden alterar haciendo que los miembros de datos se alteren de forma recursiva de acuerdo con sus valores (para las clases base, por ejemplo, podemos aplicar el cruce de profundidad primero, de izquierda a derecha). Pero definitivamente no funcionará para clases arbitrarias.