c++ - resueltos - ¿Cómo usar las clases locales con plantillas?
programacion orientada a objetos c++ ejemplos (1)
En C ++ 03 no se puede hacer, C ++ 0x levantará esa restricción.
C ++ 03, §14.3.1 / 2 :
Un tipo local, un tipo sin enlace, un tipo sin nombre o un tipo compuesto a partir de cualquiera de estos tipos no se utilizarán como un argumento de plantilla para un parámetro de tipo de plantilla.
GCC no parece aprobar la instanciación de plantillas con clases locales:
template <typename T>
void f(T);
void g()
{
struct s {};
f(s()); // error: no matching function for call to ''f(g()::s)''
}
VC no se queja.
¿Cómo deberia hacerse?