Wie lokale Klassen mit Vorlagen benutzen?
-
02-10-2019 - |
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?
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