Você precisa ser capaz de destruir os argumentos do modelo
template <std::string temp>
void f() {
// ...
}
f<"foo">();
f<"bar">(); // different function!?
Agora, um implante precisaria criar uma sequência única de caracteres para um std::string
ou, nesse caso, qualquer outra classe arbitrária definida pelo usuário, armazenando um valor particular, cujo significado não é conhecido pela implementação. Além disso, o valor de objetos de classe arbitrários não pode ser calculado em tempo de compilação.
É planejado permitir tipos de classe literais como tipos de parâmetro de modelo para pós-C ++ 0x, que são inicializados por expressões constantes. Esses poderiam ser mutilados por ter os membros de dados mutilados recursivamente de acordo com seus valores (para classes básicas, por exemplo, podemos aplicar profundidade primeiro, passagem da esquerda para a direita). Mas definitivamente não vai funcionar para classes arbitrárias.