Ecco un altro errore di compilazione VC9 rispetto a GCC 4.2. Il seguente codice compila bene con VC9 (Microsoft Visual C++ 2008 SP1), ma non con GCC 4.2 su Mac:Come correggere 'espressione primaria attesa prima' nel codice modello C++?
struct C
{
template< typename T >
static bool big() { return sizeof(T) > 8; }
};
template< typename X >
struct UseBig
{
static bool test()
{
return X::big<char>(); // ERROR: expected primary-expression
} // before 'char'
};
int main()
{
C::big<char>();
UseBig<C>::test();
return 0;
}
Tutte le idee come posso risolvere questo problema?
Questo succede ogni tanto perché è difficile cercarlo. Per la cronaca, GCC lo usava per compilare ciò quando Visual Studio no. GCC ha rimosso questo comportamento perché ha causato un sacco di graffi alla testa e non era conforme agli standard. –