2019 年 C++ 的发展
C++ 软件工程师 Bartek 发布博客,回顾了 C++ 2019 年的发展情况。
Bartek 主要介绍了 2019 年 C++ 特性上的演进、在全球的会议重大进展、相关工具的改进,以及 C++20 新特性的期待,他总结成三大关注点:
- C++20 即将发布
- 工具,现在编写 C++ 代码更加容易
- C++ 在开发者中的稳定地位
(需要注意的是,文章提出的只是 Bartek 的观点,并不代表整个 ISO C++ 委员会的观点。)
从下表可以看出来,在 2019 年,C++ 社区做了许多事情,像我们关注的新特性方面的进展也有不少,比如 Clang 8.0.0、9.0.0 发布、VS 2019 发布与 GCC 9.1 发布等。
简单总结起来,从 Clang 5.0、GCC 8.0、Visual Studio 15.7 和 Intel C++ Compiler 19.0.1 开始,所有编译器都支持 C++ 语言特性。虽然 C++ 标准库需要其它支持,特别是并行算法和文件系统之类的要点。std::filesystem
需要使用到 GCC 8.1(或更高版本的 GCC 9.1)、Clang 3.9(或更高版本 7.0)和 Visual Studio 2017 15.7。并行算法更新最早在 Visual Studio 2017 15.7 中可用,但随着之后的更新,MSVC 团队添加了更多算法。
关于 C++20 的讨论在今年占据主导地位,目前特性已经冻结,主要特性包括:
- 模组
- 协程
- 标准库 Concepts 的概念
- 范围
constexpr
支持:new
/delete
,dynamic_cast
,try
/catch
,虚拟constexpr
向量和字符串- 计时:日历、时区支持
std::format
std::span
std::jthread
目前流行的编译器已经实现了许多 C++20 特性。Bartek 列了一个 C++20 新特性的小表:
工具方面,首先 Visual Studio 对 C++ 提供了众多新的支持,包括:
- 使用 Visual Studio IntelliCode 的 AI 辅助代码补全
- C++ MSBuild 和 CMake 项目中对 Clang 和 MSVC 的 Clang-Tidy 的支持
- AddressSanitizer 支持 Windows 上使用 MSVC 编译的项目
- 与 CMake 更好地集成
- Concepts 在 16.3 中可用
- 全面的
to_chars()
支持,满足了 C++ 17 的要求 - 提供了一个名为 C++ Build Insights 的新工具集合。
Clang/LLVM 提供了许多强大的实用程序,比如:
- Clang Tidy
- Clang-Include-Fixer
- AddressSanitizer
- MemorySanitizer
代码分析器 CppDepend v2019.3 增加了对 MISRA 编码准则的支持,VS 2019 支持、QT 项目、简化的 UI、嵌入式项目支持。
PVS-Studio,这是一个使用 C/C++ 和 C# 编写的程序源代码中的错误检测工具,2019 年的一些显着变化包括 .NET Core 3 和 3.1 项目分析、MISRA 准则支持、40 多项新检查、对 Java、SonarQube 插件的支持。
包管理器 Conan 与 Microsoft/vcpkg 也都有一些新变化。
最后 Bartek 介绍了 2019 年 C++ 在开发者人群中的地位依然稳定:
- TIOBE 编程语言排行榜中 C++ 排到了第 4 位。
- 在 StackOverflow 调查中,C++ 位于 C 上方的第 9 位。
- 在 GitHub 的调查中,C++ 排名第 6。
除了这些榜单,Bartek 自己也做了一个简单的调查问卷,结果显示了关于 C++ 的使用情况,包括使用的标准库版本、工具的选择与对 C++20 新特性的使用等:
完整回顾内容查看原博客:
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Ubuntu:十年,十个关键时刻
2010 年代刚刚过去,在 21 世纪的第二个十年间,从Ubuntu 10.04 LTS 到Ubuntu 19.10,omg ubuntu 网站的作者Joey Sneddon梳理了期间最具有决定性的十个时刻,让我们一起来回顾一下。 1. 品牌重塑 2010 年初的 Ubuntu 看起来长这样: 那时的Ubuntu logo 和字体看起来也比较花哨: 曾经的Ubuntu 外观以橙色和棕色为主基调,“Linux for Humans” 的口号在 2010 年代听起来也未免有些过时。 不过这一切都没有持续太久。2010 年 3 月,Canonical 在推出 Ubuntu 10.04 LTS 发行版之前,进行了全方位的品牌改造。重塑后的品牌形象更具现代感。 当然也并非事事完美,当时推出的新壁纸被部分用户称为“紫色呕吐物”。它实在不怎么受欢迎,因此必须在Ubuntu 10.10 发布之前重新进行设计。 2. 窗口按钮移至左侧 Ubuntu 历史上最大争议事件之一无疑是 Ubuntu 10.10 中的窗口按钮争议。当时,Ubuntu 决定在 10.10 版本中将窗口按钮从窗口框架的右侧(类 Wi...
- 下一篇
01月01日云栖号头条:中国高铁进入“智能自动驾驶”时代
云栖号:https://www.aliyun.com/#module-yedOfott8第一手的上云资讯,不同行业精选的上云企业案例库,基于众多成功案例萃取而成的最佳实践,助力您上云决策! 今日最新云头条快讯:这项具有历史意义的立法将为美国消费者提供更强大的保护,从而使他们免受不请自来的骚扰电话的骚扰。,一起来看最新的资讯: 国家智能网联汽车创新中心在京启动建设 国家智能网联汽车创新中心建设启动会暨车联网(智能网联汽车)和自动驾驶地图应用试点签约活动在北京召开。工信部副部长王志军要求,着力解决智能网联汽车发展的关键共性技术问题。 反机器人电话法案《TRACED》正式成为法律 据外媒报道,美国总统唐纳德·特朗普日前签署了反机器人电话法《Pallone-Thune TRACED(全称Pallone-Thune Telephone Robocall Abuse Criminal Enforcement and Deterrence)法案》使之成为法律,进而扩大了FCC在执法和可能的罚款方面的权力。该法在参议院和众议院中几乎得到了两党一致的支持。声明还称:“美国家庭应该拥有控制他们自己通讯录...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
-
Docker使用Oracle官方镜像安装(12C,18C,19C)
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8编译安装MySQL8.0.19
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
推荐阅读
最新文章
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS6,CentOS7官方镜像安装Oracle11G
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- 设置Eclipse缩进为4个空格,增强代码规范
- Mario游戏-低调大师作品
- MySQL8.0.19开启GTID主从同步CentOS8