【发布时间】: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)是必需的。