icpc C++11 with gcc stdlib

icpc C++11 with gcc stdlib

本文关键字:stdlib gcc with C++11 icpc      更新时间:2023-10-16

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

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

我尝试定义

__GXX_EXPERIMENTAL_CXX0X__

但这无济于事。

因此,理想情况下,我所要求的是能够在c++03 stdlib中使用c++0x语言功能。

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;

这些错误显然指向C++11代码,所以听起来你想阻止编译器看到任何这些,比如-U__GXX_EXPERIMENTAL_CXX0X__(等效的GCC选项)。

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

icpc仅在这种情况下发出警告。不要把注意力放在这件事上。所有内容都将被编译。