Question

GCC ne semble pas approuver instanciation des modèles avec des classes locales:

template <typename T>
void f(T);

void g()
{
    struct s {};

    f(s()); // error: no matching function for call to 'f(g()::s)'
}

VC ne se plaint pas.

Comment faut-il faire?

Était-ce utile?

La solution

En C ++ 03 ne peut pas être fait, C ++ 0x sera ascenseur cette restriction cependant.

C ++ 03, §14.3.1 / 2 :

  

Un type local, un type sans lien, un type sans nom ou un type composé d'un de ces types ne doivent pas être utilisés comme un modèle argument pour un type paramètre template.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top