Cómo utilizar las clases locales con las plantillas?
-
02-10-2019 - |
Pregunta
GCC no parece aprobar de plantillas con las clases locales instanciando:
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 debe hacerse?
Solución
En C ++ 03 no se puede hacer, C ++ 0x voluntad ascensor que la restricción aunque.
C ++ 03, §14.3.1 / 2
A de tipo local, un tipo sin vinculación, un tipo sin nombre o un tipo de compuesto de cualquiera de estos tipos no se pueden utilizar como una plantilla-argumento para un tipo-parámetro de plantilla.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow