我目前卡住克++ 4.4.7,我使用它试图(与-std = GNU ++ 0x中标志)来编译所使用的 “的foreach” C++程序构造:应该g ++ 4.4.7 -std = gnu ++ 0x编译“for each”构造?
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
这对苹果铛-425正确编译。
我意识到g ++ 4.4.7是旧的,但是不应该它承认这个新的构造,给定了编译器标志吗?
“要启用C++ 0x支持,请将命令行参数-std = C++ 0x添加到您的g ++命令行;或者,要启用除C++ 0x扩展外的GNU扩展,请添加-std = gnu ++ 0x。GCC 4.7和更高版本支持-std = C++ 11和-std = gnu ++ 11。 [GCC中的C++ 0x/C++ 11支持](https://gcc.gnu.org/projects/cxx0x.html) –