Frage

GCC scheint nicht von Instanziierung Vorlagen mit lokalen Klassen zu genehmigen:

template <typename T>
void f(T);

void g()
{
    struct s {};

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

VC nicht beschweren.

Wie soll es getan werden?

War es hilfreich?

Lösung

In C ++ 03 es nicht getan werden kann, C ++ 0x wird Aufzug dieser Beschränkung though.

C ++ 03, §14.3.1 / 2 :

Ein lokaler Typ, ein Typ ohne Gestänge, eine unbenannte Art oder eine Art von einem dieses Typ zusammengesetzt wird nicht als für einen Template-Typ-Parameter Template-Argument verwendet werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top