原文地址:https://www.oschina.net/news/112476/cpp-in-2019
C++ 軟件工程師 Bartek 發(fā)布博客,回顧了 C++ 2019 年的發(fā)展情況。

Bartek 主要介紹了 2019 年 C++ 特性上的演進(jìn)、在全球的會(huì)議重大進(jìn)展、相關(guān)工具的改進(jìn),以及 C++20 新特性的期待,他總結(jié)成三大關(guān)注點(diǎn):
- C++20 即將發(fā)布
- 工具,現(xiàn)在編寫 C++ 代碼更加容易
- C++ 在開(kāi)發(fā)者中的穩(wěn)定地位
(需要注意的是,文章提出的只是 Bartek 的觀點(diǎn),并不代表整個(gè) ISO C++ 委員會(huì)的觀點(diǎn)。)
從下表可以看出來(lái),在 2019 年,C++ 社區(qū)做了許多事情,像我們關(guān)注的新特性方面的進(jìn)展也有不少,比如 Clang 8.0.0、9.0.0 發(fā)布、VS 2019 發(fā)布與 GCC 9.1 發(fā)布等。

簡(jiǎn)單總結(jié)起來(lái),從 Clang 5.0、GCC 8.0、Visual Studio 15.7 和 Intel C++ Compiler 19.0.1 開(kāi)始,所有編譯器都支持 C++ 語(yǔ)言特性。雖然 C++ 標(biāo)準(zhǔn)庫(kù)需要其它支持,特別是并行算法和文件系統(tǒng)之類的要點(diǎn)。std::filesystem
需要使用到 GCC 8.1(或更高版本的 GCC 9.1)、Clang 3.9(或更高版本 7.0)和 Visual Studio 2017 15.7。并行算法更新最早在 Visual Studio 2017 15.7 中可用,但隨著之后的更新,MSVC 團(tuán)隊(duì)添加了更多算法。
關(guān)于 C++20 的討論在今年占據(jù)主導(dǎo)地位,目前特性已經(jīng)凍結(jié),主要特性包括:
- 模組
- 協(xié)程
- 標(biāo)準(zhǔn)庫(kù) Concepts 的概念
- 范圍
constexpr
支持:new
/ delete
,dynamic_cast
,try
/ catch
,虛擬constexpr
向量和字符串- 計(jì)時(shí):日歷、時(shí)區(qū)支持
std::format
std::span
std::jthread
目前流行的編譯器已經(jīng)實(shí)現(xiàn)了許多 C++20 特性。Bartek 列了一個(gè) C++20 新特性的小表:

工具方面,首先 Visual Studio 對(duì) C++ 提供了眾多新的支持,包括:
- 使用 Visual Studio IntelliCode 的 AI 輔助代碼補(bǔ)全
- C++ MSBuild 和 CMake 項(xiàng)目中對(duì) Clang 和 MSVC 的 Clang-Tidy 的支持
- AddressSanitizer 支持 Windows 上使用 MSVC 編譯的項(xiàng)目
- 與 CMake 更好地集成
- Concepts 在 16.3 中可用
- 全面的
to_chars()
支持,滿足了 C++ 17 的要求 - 提供了一個(gè)名為 C++ Build Insights 的新工具集合。
Clang/LLVM 提供了許多強(qiáng)大的實(shí)用程序,比如:
代碼分析器 CppDepend v2019.3 增加了對(duì) MISRA 編碼準(zhǔn)則的支持,VS 2019 支持、QT 項(xiàng)目、簡(jiǎn)化的 UI、嵌入式項(xiàng)目支持。
PVS-Studio,這是一個(gè)使用 C/C++ 和 C# 編寫的程序源代碼中的錯(cuò)誤檢測(cè)工具,2019 年的一些顯著變化包括 .NET Core 3 和 3.1 項(xiàng)目分析、MISRA 準(zhǔn)則支持、40 多項(xiàng)新檢查、對(duì) Java、SonarQube 插件的支持。
包管理器 Conan 與 Microsoft/vcpkg 也都有一些新變化。
最后 Bartek 介紹了 2019 年 C++ 在開(kāi)發(fā)者人群中的地位依然穩(wěn)定:
- TIOBE 編程語(yǔ)言排行榜中 C++ 排到了第 4 位。
- 在 StackOverflow 調(diào)查中,C++ 位于 C 上方的第 9 位。
- 在 GitHub 的調(diào)查中,C++ 排名第 6。
除了這些榜單,Bartek 自己也做了一個(gè)簡(jiǎn)單的調(diào)查問(wèn)卷,結(jié)果顯示了關(guān)于 C++ 的使用情況,包括使用的標(biāo)準(zhǔn)庫(kù)版本、工具的選擇與對(duì) C++20 新特性的使用等:

完整回顧內(nèi)容查看原博客:
https://www.bfilipek.com/2019/12/cpp-status-2019.html