Vous devez être capable de coder les arguments de modèle
template <std::string temp>
void f() {
// ...
}
f<"foo">();
f<"bar">(); // different function!?
Maintenant une impl aurait besoin de venir avec une unique séquence de caractères pour un std::string
ou, d'ailleurs, toutes les autres arbitraire défini par l'utilisateur de la classe, de stocker une valeur particulière, dont le sens n'est pas connu pour la mise en œuvre. Et en plus, la valeur de l'arbitraire des objets de la classe ne peut pas être calculé au moment de la compilation.
Il est prévu d'envisager de permettre littérale types de classe en tant que modèle des types de paramètres pour la post-C++0x, qui sont initialisés par des expressions constantes. Ceux-ci pourraient être déformés par le fait d'avoir les membres de données de façon récursive de déformation en fonction de leurs valeurs (pour les classes de base, par exemple, nous pouvons appliquer la profondeur de la première, de gauche à droite de la traversée). Mais il est certainement ne va pas au travail pour arbitraire des classes.