Aquí hay otro problema de compilación de VC9 vs. GCC 4.2. El siguiente código compila bien con VC9 (Microsoft Visual C++ 2008 SP1), pero no con GCC 4.2 en Mac:Cómo reparar el error de la 'expresión primaria esperada antes' en el código de plantilla de 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;
}
Alguna idea de cómo puedo solucionar este problema?
Esto aparece cada cierto tiempo porque es difícil buscarlo. Para el registro, GCC solía compilar esto cuando Visual Studio no lo hacía. GCC eliminó este comportamiento porque causó muchos arañazos en la cabeza y no cumplía con los estándares. –