struct HybridExpression {
RawExpressionElement *ree;
ExpressionNode *en;
};
vector<HybridExpression> hexpression;
hexpression.insert(hexpression.begin() + starti,
(HybridExpression) {NULL, en});
gcc生成时不会发出警告,但Visual Studio 2010甚至不会对其进行编译。
它不喜欢此位:
(HybridExpression) {NULL, en}
最佳答案
这使用的是C编程语言中C++中未包含的一部分,它称为“复合文字”。 g++ -ansi
将对此进行诊断,说
这是,不是,是C++ 0x的一部分。
C++ 0x兼容语法应该是
hexpression.insert(hexpression.begin() + starti, HybridExpression{NULL, en});
引用C99标准的第6.5.2.5段: