c++ - GCC 4.4 不实现 C++11 范围循环。它支持哪些其他范围循环语法?

标签 c++ c++11 g++

我有一些使用某些 c++11 功能的第三方工具,我需要在 gcc 4.4 下编译它。由于我对 c++11 新功能一点都不熟悉,但我想在我的 google 搜索无果后我会寻求帮助。

我已经启用了 c++0x 开关,但它在这里没有帮助:

for (auto const& fixup : self->m_Fixups)

产生的错误是:

error: expected initializer before ':' token

GCC 4.4 支持哪些与 C++11 范围循环等效的其他范围循环语法?

最佳答案

该代码是基于范围的 for 循环,这在 C++11 中确实是新的。它没有在 GCC 4.4 中实现,这与 C++11 中的一些其他功能不同。试试这个:

for( auto it = self->m_Fixups.begin(); it != self->m_Fixups.end(); ++it )
{
    const auto& fixup = *it;
    // the rest of the code...
}

上面使用了一些 C++11 特性,这些特性应该在 GCC 4.4 中可用。


正如 Ben Voigt 所指出的:如果您需要使代码更高效,您也可以使用这个稍微不够简洁的版本:

for( auto it = self->m_Fixups.begin(), end = self->m_Fixups.end(); it != end; ++it )
{
    const auto& fixup = *it;
    // the rest of the code...
}

关于c++ - GCC 4.4 不实现 C++11 范围循环。它支持哪些其他范围循环语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21150266/

相关文章:

c++ - 声明友元模板类时出现问题

c++ - 在循环中从 unordered_map 中删除元素

c++ - 如何添加到已存储在集合中的集合?

c++ - 为什么允许从 pair<int64_t,int64_t> 到 pair<int,int> 的隐式转换?

c++ - 无法将字符串类型转换为 bool C++

c++ - 静态变量的位置

c++ - 为什么书上说 “the compiler allocates space for variables in memory” ?

c++ - 指针分配和段错误

C++ - 这个单独的编译代码有什么问题?

c++ - g++ Task 找不到用于简单构建的文件