我正在使用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;
答案 0 :(得分:2)
这些错误显然指向C ++ 11代码,因此听起来您希望阻止编译器看到其中任何一个,例如使用-U__GXX_EXPERIMENTAL_CXX0X__
(等效的GCC选项) )。
但是,如果ICC在-std=c++0x
下为您定义了这个,那么您应该找出您应该使用的库的版本(或者在本地ICC安装中查找库)。很难确定C ++ 03库是否足以编译C ++ 11代码。
答案 1 :(得分:0)
icpc
仅在这种情况下发出警告。不要把注意力放在这上面。一切都将被编译。