Étant donné le code suivant:
void f()
{
class A
{
template <typename T>
void g() {}
};
}
g++ 4.4 (et aussi g++-4.6 -std=gnu++0x
) se plaint: "non valide déclaration de membre de modèle dans le local de classe".
Apparemment classes locales ne sont pas autorisés à avoir de modèle de membres. Quel est le but de cette limitation? Il sera supprimé dans C++0x?
Remarque: Si je fais la classe locale elle-même un modèle, plutôt que de donner un modèle de membre:
void f()
{
template <typename T>
class A
{
void g() {}
};
}
Je reçois le message "erreur: un modèle de déclaration ne peut pas apparaître dans le bloc de portée".