Bartek, a C ++ software engineer, posted a blog reviewing the development of C ++ in 2019.Bartek mainly introduced the evolution of C ++ features in 2019, major progress in conferences around the world, improvements in related tools, and expectations for new features in C ++ 20. He summarized three major concerns:
- C ++ 20 is coming soon
- Tools, now it’s easier to write C ++ code
- C ++ ‘s stable position among developers
(It should be noted that the opinions expressed in this article are only those of Bartek and do not represent the views of the entire ISO C ++ committee.)As can be seen from the table below, in 2019, the C ++ community did a lot of things, such as the progress of new features we are focusing on, such as Clang 8.0.0, 9.0.0 release, VS 2019 release and GCC 9.1 release, etc. .To sum up briefly, starting with Clang 5.0, GCC 8.0, Visual Studio 15.7, and Intel C ++ Compiler 19.0.1, all compilers support C ++ language features. Although the C ++ standard library requires additional support, especially points like parallel algorithms and file systems. std :: filesystem requires GCC 8.1 (or later GCC 9.1), Clang 3.9 (or later 7.0), and Visual Studio 2017 15.7. Parallel algorithm updates were first available in Visual Studio 2017 15.7, but with subsequent updates, the MSVC team added more algorithms.The discussion about C ++ 20 has dominated this year, and the features have been frozen. The main features include:
- Concepts of the standard library Concepts
- constexpr support: new / delete, dynamic_cast, try / catch, virtual
- constexpr vectors and strings
- Timing: calendar, time zone support
- std :: format
- std :: span
- std :: jthread
Popular compilers have implemented many C ++ 20 features. Bartek lists a small table of new C ++ 20 features:In terms of tools, first of all, Visual Studio provides many new support for C ++, including:
- AI-assisted code completion using Visual Studio IntelliCode
- Clang-Tidy support for Clang and MSVC in C ++ MSBuild and CMake projects
- AddressSanitizer supports projects compiled with MSVC on Windows
- Better integration with CMake
- Concepts available in 16.3
- Full to_chars () support, meeting the requirements of C ++ 17
- A new collection of tools is provided called C ++ Build Insights.
Clang / LLVM provides many powerful utilities, such as:
- Clang Tidy
Code analyzer CppDepend v2019.3 adds support for MISRA coding guidelines, VS 2019 support, QT projects, simplified UI, embedded project support.PVS-Studio, an error detection tool in the source code of programs written in C / C ++ and C #. Some significant changes in 2019 include .NET Core 3 and 3.1 project analysis, MISRA guidelines support, and more than 40 new checks Support for Java and SonarQube plugins.The package manager Conan and Microsoft / vcpkg also have some new changes.Finally, Bartek introduced that C ++ ‘s position in the developer community will remain stable in 2019:
- C ++ ranks 4th in the TIOBE programming language rankings.
- In the StackOverflow survey, C ++ is ranked 9th above C.
- In a GitHub survey, C ++ ranked 6th.
In addition to these lists, Bartek also conducted a simple survey questionnaire, and the results showed the use of C ++, including the standard library version used, the choice of tools, and the use of new C ++ 20 features: