【问题标题】:icpc C++11 with gcc stdlibicpc C++11 与 gcc 标准库
【发布时间】:2012-02-14 18:49:31
【问题描述】:

我正在使用 icpc(非可选)并且我正在使用 -std=c++0x 进行编译,因此我可以使用lambas。

但是,当我这样做时,它会使用 gcc stdlib 创建 havok,其中一个支持另一个不支持的功能。

我尝试过定义

__GXX_EXPERIMENTAL_CXX0X__

但这并没有帮助。

因此,理想情况下,我要求的是能够将 c++0x 语言功能与 C++03 标准库一起使用。

gcc 4.6

icc 12.1]

编辑错误示例:

/usr/include/c++/4.6.2/type_traits(74): error: identifier "constexpr" is undefined
    static constexpr _Tp                  value = __v;
           ^

/usr/include/c++/4.6.2/type_traits(74): error: expected a ";"
        static constexpr _Tp                  value = __v;
                                          ^

/usr/include/c++/4.6.2/type_traits(75): error: member "std::integral_constant<_Tp,      __v>::_Tp" is not a type name
    typedef _Tp                           value_type;
            ^

/usr/include/c++/4.6.2/type_traits(76): error: member "std::integral_constant<_Tp,     __v>::_Tp" is not a type name
        typedef integral_constant<_Tp, __v>   type;
                              ^

 /usr/include/c++/4.6.2/type_traits(77): error: identifier "constexpr" is undefined  
         constexpr operator value_type() { return value; }
         ^

 /usr/include/c++/4.6.2/type_traits(87): error: identifier "constexpr" is undefined
      constexpr _Tp integral_constant<_Tp, __v>::value;

【问题讨论】:

  • "icpc" 是运行 intel 编译器的命令。很像 g++。
  • icpc 是调用英特尔 C++ 编译器的命令。一个非常好的针对不同操作系统的优化编译器。
  • @mikithskegg 适用于英特尔系统,也就是说,生成的二进制文件会在运行时根据 cpu 供应商 ID 禁用许多优化(而不是依赖 x86 功能位,它仅在 cpu 为“正版英特尔")。
  • 是的,但在 Intel 处理器上,与 gcc 相比,它可以将性能提高 30%。我经常在工作中使用它。
  • @josefx SIMD 优化(在我的情况下特别是 AVX)是必需的。

标签: c++ c++11 libstdc++ icc


【解决方案1】:

这些错误显然指向 C++11 代码,因此听起来您想防止编译器看到任何这些错误,例如使用-U__GXX_EXPERIMENTAL_CXX0X__(等效的 GCC 选项)。

但是,如果 ICC 在-std=c++0x 下为您定义了这个,那么您应该找出您应该使用的库版本(或在您的本地 ICC 安装中查找库)。 C++03 库是否足以编译 C++11 代码还远未确定。

【讨论】:

    【解决方案2】:

    icpc 仅在这种情况下发出警告。不要把注意力放在这上面。一切都会被编译。

    【讨论】:

    • 没有错误,我在编辑中添加了一个这样的例子。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-15
    • 2014-01-25
    • 1970-01-01
    • 1970-01-01
    • 2013-07-31
    • 1970-01-01
    • 2019-06-19
    相关资源
    最近更新 更多