启用 C++14 英特尔编译器
Enable C++14 Intel Compiler
我正在使用英特尔C++编译器版本 15.0.0.108 Build 20140726,但我无法使用某些 C++14 功能,例如"decltype(auto),普通函数的返回类型推断"在此处声明支持
如果我做这样的事情:
std::for_each(vector.begin(), vector.end(), [] (auto value) {});
然后我得到这个错误:
错误:此处不允许使用"自动"
我正在使用这个进行编译:
icl /FA /EHs program.cpp
您尝试使用的功能称为来自 N3649 的通用(多态)lambda 表达式,您链接的表显示尚未添加支持。但是,您认为正在使用的功能,N3638 中的"decltype(auto),正常函数的返回类型推导"确实有支持。
泛型 lambda 如下所示:
[](auto a) { return a; }
正常函数的返回类型推导如下所示:
auto func() { return 42; } // deduced to be int
n3638 中的以下示例中描述了decltype(auto)
的语义:
如果占位符是 decltype(auto) 类型说明符,则声明的 变量的类型或函数的返回类型应为 仅占位符。为变量或返回类型推导的类型为 按照 7.1.6.2 中所述确定,就好像初始值设定项是 decltype 的操作数。[ 示例:
int i; int&& f(); auto x3a = i; // decltype(x3a) is int decltype(auto) x3d = i; // decltype(x3d) is int auto x4a = (i); // decltype(x4a) is int decltype(auto) x4d = (i); // decltype(x4d) is int& auto x5a = f(); // decltype(x5a) is int decltype(auto) x5d = f(); // decltype(x5d) is int&& auto x6a = { 1, 2 }; // decltype(x6a) is std::initializer_list<int> decltype(auto) x6d = { 1, 2 }; // error, { 1, 2 } is not an expression auto *x7a = &i; // decltype(x7a) is int* decltype(auto)*x7d = &i; // error, declared type is not plain decltype(auto)
— 结束示例 ]
相关文章:
- 将"-01"替换为"-02" 英特尔编译器选项会导致 FPE 在较小的 for 循环行程计数中抛出
- 在 Azure DevOps 构建管道中使用英特尔C++编译器为 Linux 环境构建C++代码
- 编译器错误(英特尔并行工作室 2019 与 Visual Studio 社区 2019)
- 如何要求 macports 用英特尔编译器包装 openmpi?
- 带有 gcc 7.1/8.1 的英特尔编译器 17.0
- 编译 Fortran 和C++程序并从英特尔编译器链接
- 英特尔C++编译器 19.0 测试版中删除了对英特尔®图形技术的卸载支持
- 英特尔编译器 (C++) 问题与 std::vector 上的 OpenMP 缩减
- 英特尔 TBB - "初始化关键部分 Ex":找不到标识符编译器错误
- 编译器优化:G 比英特尔慢
- 无法在 Windows 上使用英特尔编译器编译示例 boost::多精度
- 英特尔C++编译器 (19.0) 现在是否仅使用 Clang 前端(即已经放弃的 EDG)?
- 功能模板与Variadic模板过载:Intel C 编译器版本18产生的结果不同于其他编译器.英特尔是错误的
- 在英特尔C++编译器 (Linux) 的配置搜索路径中找不到文件可执行文件
- 英特尔C++编译器错误:标识符"_Compare"未定义
- 可能的编译器错误:在两台机器之间使用英特尔编译器的boost bessel函数会产生奇怪的结果
- 与英特尔相比,GNU C++编译器在对向量进行排序时性能较差
- 英特尔C++编译器和Eigen
- 英特尔C++编译器找不到 stdio.h
- 使用英特尔编译器编译boost 1.57