Non type de paramètres de modèle

Je comprends que le non-type de modèle paramètre doit être une constante expression intégrale. Quelqu'un peut-il éclairer pourquoi est-il si ?

template <std::string temp>
void foo()
{
     //...
}
error C2993: 'std::string' : illegal type for non-type template parameter 'temp'.

Je comprends ce qu'est une constante expression intégrale est. Quelles sont les raisons de ne pas autoriser les non-constante des types comme std::string comme dans l'extrait ci-dessus ?

  • Un paramètre du modèle est résolu au moment de la compilation.
InformationsquelleAutor Mahesh | 2011-04-16