C++17 详解 5
本文为 《C++17 in detail》 一书的中文渣中渣译文,不足之处还望指正。
2. 语言阐明
学习并完全理解 C++ 是很有挑战的,许多地方都让程序员很疑惑。缺乏明确行为的一个原因,可能是赋予了编译器实现自由选择的权利。比如,允许更激进的优化,或者为了向后兼容(或者兼容 C)的需要。C++17 回顾了几个最出名的“黑洞”并把它们做了处理。
本文为 《C++17 in detail》 一书的中文渣中渣译文,不足之处还望指正。
学习并完全理解 C++ 是很有挑战的,许多地方都让程序员很疑惑。缺乏明确行为的一个原因,可能是赋予了编译器实现自由选择的权利。比如,允许更激进的优化,或者为了向后兼容(或者兼容 C)的需要。C++17 回顾了几个最出名的“黑洞”并把它们做了处理。
本文为 《C++17 in detail》 一书的中文渣中渣译文,不足之处还望指正。
修复的定义是有争论的。下边 3 条应该算是对在之前规则下缺失、不能正常工作的内容的修复。
本文为 《C++17 in detail》 一书的中文渣中渣译文,不足之处还望指正。
register
关键字 register
在 2011 年(C++11)被弃用,自那以后 register
已经没有意义,现在它被删除。这个关键字仍然被保留,有可能会在未来某个版本重新设计意图(比如关键字 auto
就是复用而来,现在它是一个全新的、更强大的特性)。
本文为 《C++17 in detail》 一书的中文渣中渣译文,不足之处还望指正。
C++17 标准现在有超过 1600 页,比 C++14 多出了 200 多页。幸运的是,语言规范在一些地方得到了清理,一些老旧的或潜在的坏特性随之被清除。
本章你将学到:
register
关键字,auto_ptr
和 std::random_shuffle
。brace initialisation
)的自动类型推导。本文为 《C++17 in detail》 一书的中文渣中渣译文,不足之处还望指正。
C++17 是对 C++ 的一次重大更新,引入了大量语言特性。大多数新增特性让 C++ 更简洁更直截了当。
在本部分你将学到:
if constexpr
、折叠表达式(fold expressions
)attributes
)structured binding
)、内联变量(inline variables
)、编译时 if
和类模版参数推导(template argument deduction for classes
)写出更简洁更具表现力的代码C++17 终于把并行计算引入到了 STL,且更新成本极低,只是把 大多数迭代算法函数 多加了一个并行版本的重载,实现了并行、并发两个维度上的性能优化。
比如,对一组数据做一个加倍的 transform:
1 | std::transform(std::execution::seq, iter_begin, iter_end, output_iter, [](int val) { return val * 2; }); |
绑定指定名称到初始化器的子对象或元素。 通俗地讲,对形如 std::pair
、std::tuple
或自定义聚合类型的实例,可以声明一组变量直接指向其成员,无需创建一个对应聚合类型的临时变量:
1 | std::pair<int, int> point{ 0, 1 }; |