Come utilizzare le classi locali con le mascherine?
-
02-10-2019 - |
Domanda
GCC non sembra approvare instanciating modelli con classi locali:
template <typename T>
void f(T);
void g()
{
struct s {};
f(s()); // error: no matching function for call to 'f(g()::s)'
}
VC non si lamenta.
Come dovrebbe essere fatto?
Soluzione
In C ++ 03 non può essere fatto, C ++ 0x volontà ascensore tale restrizione però.
C ++ 03, §14.3.1 / 2 :
Un tipo locale, un tipo senza legame, un tipo senza nome o di un tipo composto da uno di questi tipi non devono essere utilizzati come modello-argomento per un tipo di parametro template.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow