我目前坚持使用 g++ 4.4.7,我尝试使用它(使用 -std=gnu++0x 标志)来编译使用“foreach”构造的 c++ 程序:
190: void
191: Block::get_record_types(D_RecordType_Vector& record_type_vector) const {
192: for ( D_Record_Map::value_type rt_v_i : _records) {
193:
194: record_type_vector.push_back(rt_v_i.first);
195: }
196: }
第一个错误让我认为它只是没有识别构造:
./c/Block.cpp:192: error: expected initializer before ':' token
./c/Block.cpp:196: error: expected primary-expression before '}' token
./c/Block.cpp:196: error: expected ';' before '}' token
./c/Block.cpp:196: error: expected primary-expression before '}' token
./c/Block.cpp:196: error: expected ')' before '}' token
./c/Block.cpp:196: error: expected primary-expression before '}' token
./c/Block.cpp:196: error: expected ';' before '}' token
这在 Apple clang-425 上正确编译。
我意识到 g++4.4.7 是旧的,但考虑到编译器标志,它甚至不应该识别新结构吗?