栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

C++17 关键新特性介绍及代码讲解 (1) — 前言和目录

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C++17 关键新特性介绍及代码讲解 (1) — 前言和目录

C++17 关键新特性介绍及代码讲解 (1) — 前言和目录
前言

C++最早的版本可以追溯到 1998 年,即C++98; 从 C++11 开始,ISO C++ 委员会(也叫做 WG21 ),保持每三年一个 ISO 标准版本的发布频率:

年份C++版本名称ISO标准号
1998C++98ISO/IEC 14882:1998
2003C++03ISO/IEC 14882:2003
2011C++11ISO/IEC 14882:2011
2014C++14ISO/IEC 14882:2014
2017C++17ISO/IEC 14882:2017
2020C++20ISO/IEC 14882:2020
2023C++23in-progress

C++17,也就是 2017 年发布成为 ISO/IEC 14882:2017 标准的版本, 我们在这里将 C++17 的关键新特性,
选取一些显著的、常用的内容,简要讲明这些特性是什么、有什么好处、要解决什么问题,同时配有 demo code 和 CMakeList,你可以直接 build 运行、修改源代码等,观察运行结果。

所有示例源代码均存放于 gitee.com 上的公开代码仓库,路径:[cpp17_new_features_introduction_and_demo]

C++17 是否已经成为项目开发的主流 C++ 版本? 我们看看 Google 当前(2022年6月10日)使用的 C++ 版本:

引用自 [Google C++ Style Guide] :

C++ Version

currently code should target C++17, i.e., should not use C++2x features, with the exception of designated initializers.

需要说明的是,目前一些知名的大型开源 C++ 项目,主流还是 C++11/C++14, 比如:

pytorch 的 C++ 源代码使用 C++14;

ROS2 Galaxy 的 C++ 源代码使用C++11/C++14(未来有升级到C++17的计划);

百度 Apollo 的 C++ 源代码使用 C++11。

同时,我们需要注意各主流编译器,比如gcc、llvm等,对 C++17 各特性的支持情况, 参见: Compiler support for C++17

demo 代码用到的开发和运行环境如下:

CPU: AMD Ryzen 7 5800H

操作系统: ubuntu 20.04

编译器: gcc 10.3.0


特性讲解目录索引

每个目录项均为超链接,可跳转至详细的介绍和代码示例

核心语法更新 1. New auto rules for direct-list-initialization

对于使用 brace-list ( 即花括弧 { }) 进行初始化的 auto变量,更新了 auto变量类型的推导规则,更新后的规则更加清晰。

2 typename in a template template parameter

在声明 template template parameter 时,允许使用使用关键字 typename。

3. nested namespace

在定义 namespace 时,允许通过添加 qualified name 的方式,一次定义多层的、嵌套式 namespace 。

4. attributes for namespaces and enumerators

在定义 namespace、enum时,允许指定 attributes。 这里的 attributes 指: 具体所使用的C++编译器所提供的语言扩展属性。

5. fold expression

fold expression 是将 parameter pack 进行递归展开、并通过二元操作符 (binary operator) 进行运算的一种表达式。

持续更新中… STL库的新增功能 持续更新中…
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/974059.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号