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?

È stato utile?

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
scroll top