Đây là một vấn đề lỗi biên dịch VC9 so với GCC 4.2 khác. Các mã sau đây biên dịch tốt với VC9 (Microsoft Visual C++ 2008 SP1) nhưng không phải với GCC 4.2 trên Mac:Cách sửa lỗi 'biểu thức chính trước kỳ vọng' trong mã mẫu 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;
}
Bất kỳ ý tưởng làm thế nào tôi có thể sửa lỗi này?
Điều này xuất hiện thường xuyên vì rất khó tìm kiếm. Đối với hồ sơ, GCC được sử dụng để biên dịch này khi Visual Studio không. GCC loại bỏ hành vi này bởi vì nó gây ra rất nhiều đầu gãi và không tuân thủ các tiêu chuẩn. –