Devi essere in grado di manipolare gli argomenti del modello
template <std::string temp>
void f() {
// ...
}
f<"foo">();
f<"bar">(); // different function!?
Ora un impl dovrebbe creare una sequenza di caratteri univoca per una std::string
o, per quella materia, qualsiasi altra classe arbitraria definita dall'utente, memorizzando un valore particolare, il cui significato non è noto all'implementazione. Inoltre, il valore di oggetti di classe arbitrari non può essere calcolato in fase di compilazione.
Si prevede di considerare la possibilità di consentire tipi di classi letterali come tipi di parametri del modello per post-C ++ 0x, che vengono inizializzati da espressioni costanti. Questi potrebbero essere alterati facendo modificare ricorsivamente i membri dei dati in base ai loro valori (per le classi base, ad esempio, possiamo applicare la profondità prima, attraversamento da sinistra a destra). Ma sicuramente non funzionerà per classi arbitrarie.