Last Update:
C++ at the end of 2021
Table of Contents
I’m happy to present the 10th edition of “C++ at the end”! See what happened this year in the C++ World!
New features, plans for the language, updated tools and compilers, conferences, books, and more!
What was the most important event this year? The pandemic? C++20 adoption? Ongoing work for C++23 or something else?
Let’s have a look.
Reports from previous years: 2020, 2019, 2018, 2017, 2016, 2015, 2014, 2013, 2012.
The following companies support this year’s report:
Disclaimer: the view presented here is mine and does not represent the opinion of the ISO C++ committee, companies I work for, or sponsors.
A Brief Introduction
2021 was the full pandemic year, and we all seem to be tired, frightened, bored, or even divided (in various proportions). It looks like we have already accepted that the situation won’t change anytime soon. Focusing on programming, we can say that we’re lucky to adapt so fast to new life and workstyle in most cases. For many, working from home might be better than in the office, but ideally, having a mix is probably preferred.
Regarding C++, I see the following major trends and topics in 2021:
- C++20 adoption,
- C++23 ongoing, but seemed to be slowed by pandemic,
- Better tools.
Read on to get the complete picture.
Timeline
The below table helps to see the main events:
Date | Event |
---|---|
February 22nd | Virtual plenary meeting, ISO C++, WG21 |
March 9 - 14 | Accu 2021 |
March 11th | PVS-Studio 7.12 |
April 7/8 | CLion 2021.1 & ReSharper C++ 2021.1 |
April 14th | Clang 12.0 |
May 2–7 | C++ Now |
June 7th | Virtual plenary meeting, ISO C++, WG21 |
June 19th | Italian C++ Conference |
July 28th | CLion 2021.2 |
July 14th | HPX V17.0 Released |
July 28th | GCC 11.2 |
August 3rd | ReSharper C++ 2021.2 |
August 10th | Visual studio 2019 16.11.0 |
August 11th | Boost 1.77 |
September 10th | C++ Builder 11.0 Alexandria |
October 4th | Clang 13.0 |
October 4th | Virtual plenary meeting, ISO C++, WG21 |
October 25 - 29 | CppCon 2021 |
November 8th | Visual Studio 2022 generally available! |
November 10 - 12 | Meeting C++ 2021 |
November 15 - 18 | C++ Russia |
December 1st | CLion 2021.3 |
December 8th | ReSharper C++ 2021.3 |
December 10th | PVS-Studio 7.16 |
Compiler Support for C++17
It’s four years after C++17 was published, and this year we can say that all major compilers support the language features!
The only tricky thing is Parallelism - parallel algorithms. Clang still misses it, while GCC leverages Intel TBB as the backed infrastructure.
This year there was also good progress with floating-point support for low-level conversion routines - from_chars
and to_chars
. While integers have worked since early versions of GCC and Clang, the floats and doubles support happens only in version GCC 11 and Clang 14.
The MSVC compiler implemented both numerical categories a long time ago.
You can find full data at C++17 compiler support - cppreference.com
Additionally since GCC 11: GCC 11 Now Defaults To C++17 Dialect By Default - Phoronix
and if you want to learn all features from C++17, here’s my oveview: C++ 17 Features - C++ Stories
Compiler Support For C++20
On the other hand, it’s only one year after C++20 was standardized, and major compilers are very close to announcing full conformance!
Here are some of the best features added to the Standard:
- Modules
- Coroutines
- Concepts and Concepts in the Standard Library
- Ranges
- operator
<=>
and its use in the Standard Library, simplified operator rewriting rules - Text formatting -
std::format
- Calendar and timezones
jthread
, semaphores, more atomics, barriers, and more concurrency stuffconsteval
andconstinit
constexpr
algorithms, vector, string, memory allocationsstd::span
- and more!
And here’s the table with compiler notes for language features:
Compiler | Notes |
---|---|
GCC 11 | Only Modules are in the “partial” state |
Clang 12 | partial for lambda features, NTTP, coroutines, modules, consteval, missing: Make typename more optional, conditionally Trivial Special Member Functions, CTAD improvements |
MSVC 16.9 | Full support! |
While Clang was usually the fastest to implement various improvements, it looks like it slowed down, and other compilers (mostly MSVC) are taking its position.
Regarding library features:
Compiler | Notes |
---|---|
GCC libstdc++ | missing make_shared for arrays, make_unique_for_overwrite , text formatting, small atomic bits |
Clang libc++ | missing make_shared for arrays, FP atomics, osyncstream , atomics bits, make_unique_for_overwrite , Standard library header units, std::execution::unseq , jthread , constexpr string and vector , partial text formatting, |
MSVC STL | Full support as of MSVC 16.9, 17.0! |
You can track the status @cppreference - C++20 support.
If you want to learn all features, you can see this great and super popular blog post by Oleksandr Koval:
All C++20 core language features with examples
This year at C++ Stories I also covered a lot of features from the new standard:
- Designated Initializers in C++20 - C++ Stories
- C++20: Heterogeneous Lookup in (Un)ordered Containers - C++ Stories
- C++20 Oxymoron: constexpr virtual - C++ Stories
- constexpr vector and string in C++20 and One Big Limitation - C++ Stories
- Empty Base Class Optimisation, no_unique_address and unique_ptr - C++ Stories
- Predefined C++20 Concepts: Callables - C++ Stories
- C++20 Concepts - a Quick Introduction - C++ Stories
- Increased Complexity of C++20 Range Algorithms Declarations - Is It Worth? - C++ Stories
Here’s the tag with more than 45 articles (and growing) at the blog: Cpp20 - C++ Stories.
And have a look at modernescpp where Rainer Grimm covered probably all of the features in his long article series:
- C++20 Modules: Private Module Fragment and Header Units - ModernesCpp.com
- Latches in C++20 - ModernesCpp.com
- Barriers and Atomic Smart Pointers in C++20 - ModernesCpp.com
- Semaphores in C++20 - ModernesCpp.com
- Bit Manipulation with C++20 - ModernesCpp.com
- Calendar and Time-Zones in C++20: Time-Zones - ModernesCpp.com
- std::format in C++20 - ModernesCpp.com
Additionally, you can also check out Jason Turner’s C++ Weekly with most C++20 features covered:
- C++ Weekly C++20 Playlist - YouTube
- C++ Weekly - Ep 194 - From SFINAE To Concepts With C++20 - YouTube
- C++ Weekly - Ep 261 - C++20’s New consteval Keyword - YouTube
The C++23 Status
If you cannot cope with new features in C++20… don’t worry; C++23 is just around the corner with cool new stuff :)
What’s more, some compilers already support a lot of features!
While it’s the end of 2021, we’re just two months away from marking the standard “feature freeze,” and no new features will be added.
Today, we know (and that was the plan) that C++23 will be much smaller than C++20, maybe even smaller than C++17. This new Standard will “complement” and finalize prominent features added in C++20.
Some features and their current support (including language and library elements):
Feature | GCC | Clang | MSVC |
---|---|---|---|
Make () more optional for lambdas |
11.0 | 13.0 | x |
if consteval |
12.0 | 14.0 | x |
Deducing this |
x | x | x |
Multidimensional subscript operator | 12.0 | x | x |
Stacktrace library | x | x | x |
std::is_scoped_enum |
11.0 | 12.0 | VS 2022 17.0 |
contains() for strings and string views |
11.0 | 12.0 | VS 2022 17.0 |
constexpr for std::optional and std::variant |
12.0 | 13.0 | VS 2022 17.1 |
Later this year, we could hear some updates from the members of the ISO Committee:
- C++23 ISO Progress with Bryce Adelstein Lelbach
- C++23: Near The Finish Line at Reddit
Some features that will probably land in C++23:
std::execution
, P2300- A Plan for C++23 Ranges, P2214 (split into several separate papers)
std::generator
: Synchronous Coroutine Generator for Ranges, P2168std::lazy
, P1056 - lazy coroutine (coroutine task) type- Formatted Output -
std::print
, P2093 std::mdspan
, P0009- Mixed Comparisons For Smart Pointers, P2249
Networking has no consensus - TS is probably not worth putting into the Standard with its current state. Networking TS is also based on the ASIO model, and that can conflict with other features related to async. Do we need to have a single model for async processing? And last year, it appeared that this would not be going to work.
ISO C++ Online Meetings
While all face-to-face gatherings are canceled, the ISO committee meets regularly on online meetings.
All SG groups work on their tasks and set of features. For example, in 2020, there were around 200 meetings in total. The number might be similar for 2021.
The committee has to vote on the features and merge them in the current draft from time to time. This usually happens in physical meetings, but there are online plenary sessions now. This year we had three of them:
- February 22nd
- June 7th
- October 4th
You can get a grasp of the current “virtual” ISO process in this cool podcast with Bryce Adelstein Lelbach C++23 ISO Progress @CppCast.
And here are the reports written by Herb Sutter from two of those plenary meetings:
- Trip report: Summer 2021 ISO C++ standards meeting (virtual) – Sutter’s Mill
- Trip report: Winter 2021 ISO C++ standards meeting (virtual) – Sutter’s Mill
And here’s the current status:
Mailings available in a nice table from isocpp.org:
- 2021-12 Mailing Available
- 2021-11 Mailing Available
- 2021-09 Mailing Available
- 2021-08 Mailing Available
- 2021-07 Mailing Available
- 2021-06 Mailing Available
- 2021-05 Mailing Available
- 2021-04 Mailing Available
- 2021-03 Mailing Available
- 2021-02 Mailing Available
- 2021-01 Mailing available
Compilers
Compiler vendors impress me with the speed of implementing new features and adding various improvements to the build stack.
Visual Studio
This year, Microsoft released their official stable version of the new IDE: Visual Studio 2022 (current version 17.0)
See the release notes: What’s new in Visual Studio 2022 | Microsoft Docs
And the presentation by Scott Hanselman:
Some of the most significant changes:
- It is the first version to run as a 64-bit process! This change allows the Visual Studio process to access more than 4GB of memory which helps in large projects.
- Hot Reload for C# and native C++ apps! It’s based on Edit & Continue.
A cool presentation about best feature for C++:
Some MSVC news and blogs:
- Speed up your .NET and C++ development with Hot Reload in Visual Studio 2022
- MSVC C++20 and the /std:c++20 Switch - C++ Team Blog
- Static Analysis Fixes in Visual Studio 2019 version 16.11
- Moving a project to C++ named Modules
- Edit Your C++ Code while Debugging with Hot Reload in Visual Studio 2022
- 2x-3x Performance Improvements for Debug Builds
- Address Sanitizer for MSVC Now Generally Available
And here’s a documentation page about the conformance with C++ Standards (including C++20): Microsoft C++ language conformance table
Additionally, you can track the progress of the Standard Library implementation at Github: Changelog · Microsoft/STL Wiki.
GCC
Current stable version GCC 11.2 from July 28 GCC 11 Release Series.
You can also see the preview of the upcoming GCC 12: GCC 12 Release Series — Changes, New Features, and Fixes - GNU Project.
Among various new language features added into the latest versions of GCC, the big news is a new linker, called “mold”. rui314/mold: mold: A Modern Linker Mold (linker) 1.0 released [LWN.net]
The new linker offers dramatic speedup for the linking phase. For example, in one benchmark, compiling Chrome 96 goes down from 53 seconds (Gold linker) into just 2 seconds!
It will be added into GCC 12: GCC 12 Adds Support For Using The Mold Linker - Phoronix.
Language and the Library support notes:
Clang
Current stable version: 13.0.0 from October 4, Release Notes — Clang 13 documentation.
And also, you can preview Clang 14: Clang 14.0.0 (In-Progress) Release Notes.
- Current C++ Support in Clang
- libc++ C++20 Status — libc++ 12.0 documentation
- libc++ C++2b Status — libc++ 12.0 documentation
C++ Builder
The current version is C++Builder 11 Alexandria, released on the 10th of September along with RAD Studio.
See the release notes.
The IDE uses a modified Clang Compiler (version 5.5, see the compiler notes), supports C++17. The Dinkumware C++17 STL implementation works with both Win32 and Win64 apps. C++Builder is a full-featured IDE for building iOS, Android, Windows, and macOS apps from a single C++ codebase.
You can also check the Community version: C++Builder: Community Edition - Embarcadero.
Interestingly, Embarcadero supported Dev C++, and they managed to release a new (and free) version of this excellent and small IDE! Here’s the Github link: Embarcadero/Dev-Cpp: A fast, portable, simple, and free C/C++ IDE
IDE and Productivity
Here’s a nice overview of the whole C++ Ecosystem: C++ Ecosystem: Compilers, IDEs, Tools, Testing and More - C++ Stories
And below, you can find a list of their updates in 2021:
Visual Assist
Visual Assist is a powerful addition to any of Visual Studio versions; it improves almost every aspect of VS IDE.
The latest version is from November 2021 - see the latest Release notes
This year the VA team managed to put a lot of improvements, especially in code inspections and better performance for large projects.
See the recent news on their blog:
- Visual Studio 2022 Support!
- Visual Assist 2021.4 is released! (And notes on Visual Studio 2022)
- Unreal Engine ‘Quality Of Life’ in Visual Assist 2021.2
ReSharper C++
ReSharper C++ is a Visual Studio productivity extension for C++ developers. It enhances the built-in features of Visual Studio, like refactoring, code analysis, navigation, and others.
In 2021, ReSharper C++ added support for the most recent C++20 language features and provided quick fixes to modernize the codebase automatically. The extension brought support for many rules from the C++ Core Guidelines and received extended capabilities for Unreal Engine game developers, like creating UE classes from templates without launching Unreal Editor.
A detailed summary of this year’s changes can be found here: What’s New in ReSharper C++.
CLion
CLion is a cross-platform IDE for C and C++ by JetBrains. It works for projects in a wide range of fields, including trading and banking, embedded systems and AI, and many others.
In 2021, CLion extended the scope of its lifetime analysis to the translation unit and doubled the coverage of the MISRA C 2012 and MISRA C++ 2008 specifications. CMake presets and GNU Autotool projects are also now supported. The debugger received lots of enhancements and RTOS debugging was addressed, with dedicated tables and data now available in debug mode. CLion now features Code With Me, a new JetBrains service for collaborative development and pair programming, and it now supports the new remote development workflow. A detailed summary of this year’s changes can be found here: What’s New in CLion.
Clang Power Tools
For Visual Studio, you can use Clang Power Tools - @Visual Studio Marketplace. Developed by Victor Ciura (@ciura_victor) and his Team.
Clang Power Tools is a free Visual Studio extension helping C++ developers modernize and transform their code to C++14/17/20 standards by using LLVM’s static analyzer and CppCoreGuidelines.
This year, in February, the team announced that the tool is now free for all users. See their blog post: Next steps for Clang Power Tools.
Clang Tools
Clang/LLVM powers many great utilities! For example:
Compiler Explorer
Compiler Explorer, created by Matt Godbolt, is an interactive tool that lets you type code in one window and see the results of its compilation in another window.
Among many cool features, this year, Matt Godbolt’s team introduced a way to use CE with multiple files and manage them via CMake scripts! This is called “IDE mode”.
See this excellent tutorial: Compiler Explorer with Cmake–Gajendra Gulgulia : Standard C++.
I’ve been using this tool (along with Wandbox) to experiment with various C++ features and even separate tools (like clang-tidy). It offers a way to check code against multiple compilers or libraries quickly.
Others:
It’s (or was…) a free and open-source, cross-platform source explorer. It was developed for several years, but unfortunately, the team decided to stop after releasing some final updates this year. See the blog post: Discontinue Sourcetrail
Package Managers:
The open-source, decentralized and multi-platform package manager. Version 1.43 available this year. See their recent blog posts:
- Conan 1.43: Start preparing your recipes for Conan 2.0…
- Conan 1.42 : New Conan XcodeDeps multi-config generator for Xcode…
- Achievement Unlocked: Conan Center Hits 1,000 Recipes (and Counting)
Microsoft/vcpkg: VC++ Packaging Tool
An open source C++ Library Manager for Windows, Linux, and MacOS. See the latest articles and releases:
- Bootstrap your dev environment with vcpkg artifacts - C++ Team Blog
- All vcpkg enterprise features now generally available: versioning, binary caching, manifests and registries - C++ Team Blog
- How to start using registries with vcpkg - C++ Team Blog
Code Analyzers:
Various static code analyzers are available for C++. They range from simple checkers to super-advanced systems. The tools make it possible to detect problems early, improve code style, and add security bounds. While C++ is a complex language to parse, the analyzers heavily enhanced and are state-of-the-art tools in recent years.
PVS-Studio
PVS-Studio is a static code analysis solution that detects errors in C++ programs on Windows, Linux, and macOS. Available with popular IDEs, including CLion. Run it locally or in the cloud.
PVS-Studio’s developers implemented intermodular analysis of C++ projects and supported security and safety standards, including Misra C.
In December 2021, PVS-Studio released version 7.16. To learn more, click here: PVS-Studio 7.16, expanding the horizons: Misra C, Visual Studio 2022, .NET 6.
Use the cppstories2021 promo code and get a 30-day PVS-Studio license for your project.
SonarQube
SonarQube is an open-source platform developed by SonarSource for continuous inspection of Code Quality to perform automatic reviews with static analysis of code to detect bugs, code smells, and security vulnerabilities on 29 programming languages. SonarQube also supports the latest versions of C++!
In a recent blog article, the SonarSource team noted that they already have 28 C++20-specific rules in the latest releases of all of their products, including SonarQube, (with many more in development) aiming to make your coding easier and your code safer and more performant. Take a look and see what you can try today.
SonarLint
SonarLint is a free IDE extension (for most IDEs out there) that highlights bugs, code smells and security vulnerabilities directly in the IDE as you write code, with clear remediation guidance.
Its most recent release brings support for ‘Quick Fixes’ in CLion. For over 40 rules (unique and not available in the IDE or an improved version!) you can find and easily repair issues in your C and C++ code. It also includes additional C++ rules to help you avoid pitfalls when using new C++20 features.
You can visit the SonarLint What’s New page to see all the latest news about the free tool.
SonarCloud
SonarCloud, developed by SonarSource, is the leading online service to catch Bugs, Code Smells and Vulnerabilities in 24 coding languages in your repositories.
Completely free for open source projects, developers can analyze C++ pull requests and see the results in the DevOps platform of their choice. It’s most recent update related to C++ includes added rules to master C++20’s coroutines. Start scanning for free today!
See the latest changes at What’s New page.
Others:
- CppCheck - it’s a static analysis tool for C/C++ code, this year at version 2.6, see the release notes.
- CppDepend - this year we have version CppDepend v2021.1 - What’s new in CppDepend!
- Deleaker - it’s an extension for all major IDEs and a standalone application for memory leak detection - memory, GDI, and handles. Supports C++, C#, .NET and Delphi. See the latest release notes.
Conferences
Fortunately, this year, some conferences tried to open their physical venues or go hybrid. This is a good opportunity to target larger audiences and offer a way to get most of the content on flexible terms.
Have a look at this link to ISO C++ page with all registered conferences around the world: Conferences Worldwide, C++FAQ.
Some notable conferences in 2021:
CppCon 2021
October 25 till 29 (usually it was in late September), hybrid model.
You can watch keynotes, and other videos through this page: https://pages.jetbrains.com/cppcon2021
Trip Reports:
- Inbal Levi CppCon 2021 Trip Report.
- Javier Estrada CppCon 2021 Virtual Trip Report.
- Shafik Yaghmour CppCon 2021 Trip Report.
- Jens Weller Tripreport: virtual CppCon 2021 on Meeting C++.
- Timur Doumler CppCon 2021 trip report for JetBrains.
Meeting C++ 2021
10 - 12th November 2021, fully online
C++ Russia
15 Nov - 18 Nov
It’s a conference with several tracks of in-depth technical talks devoted to C++. https://2021.cppconf.ru/en/
C++ Now
May 2–7
You can watch video recordings through the following pages:
ACCU 2021
ACCU 2021 - It Happened between March 9 to March 14; it was a virtual event.
See the recordings:
Community & User Groups
User groups are a chance for you to meet other C++ programmers, share your experience and learn new things. I highly recommend visiting such groups regularly… or at least once in a while.
If you don’t have a User Group close to your place (but please check User Groups Worldwide), you can also participate in:
- C++ Slack channel: https://cpplang.now.sh/
- #include C++
Additionally, Meeting C++ created Meeting C++ Online - a global monthly event where you can join and watch amazing C++ presentations. See it here: Meeting C++ online.
Jens Weller also organizes Meeting C++ online - job fair, and it’s an opportunity for you if you want to see for some new roles and get experience with new companies.
No Diagnostic Required show and C++ Annotated digest
For dynamic summaries of the latest developments from the C++ ecosystem, standardization news, and popular articles, take a look at the No Diagnostic Required YouTube show and podcast run by Anastasia Kazakova and Phil Nash. If you prefer to read your news, you can find written versions of our digests in the C++ Annotated emails and blog posts.
Books
A few selected books that arrived in 2021 (or late 2020):
Disclaimer: Links in the table are affiliate links to Amazon.
Name | Release Date |
---|---|
Object Lifetime Puzzlers - Book 1 by Jason Turner | December |
Beautiful C++: 30 Core Guidelines… by J. Guy Davidson, Kate Gregory | December |
Discovering Modern C++ 2nd Edition by Peter Gottschling | December |
Embracing Modern C++ Safely by by J. Lakos, V. Romeo, R. Khlebnikov, A. Meredith | December |
The Art of Writing Efficient Programs by Fedor G. Pikus | October |
Modern C++ for Absolute Beginners by Slobodan Dmitrović | July |
C++20: Get the Details by Rainer Grimm | April |
Software Architecture with C++ by A. Ostrowski and P. Gaczkowski | April |
Professional C++ 5th Edition by Marc Gregoire | April |
My C++ Lambda Story in Print | February |
C++ Best Practices by Jason Turner | January |
Performance Analysis and Tuning on Modern CPUs by Denis Bakhvalov | November 2020 |
Beginning C++20 6th, Ivor Horton and Peter Van Weert | October 2020 |
Plus, there is ongoing work for another C++20 Book by Nicolai M. Josuttis: “C++20 - The Complete Guide”.
Promotions!
Exclusively for this article Rainer Grimm from modernescpp.com offers 30% off for his ebook on C++20! Grab it here:
- C++20: Get the Details by Rainer Grimm @Leanpub 30% off (valid till 7th January 2022)
Nicolai M. Josuttis offers the following coupon code:
- C++20 - The Complete Guide @Leanpub - only 16.9$ for his latest book (valid till 15th January 2022).
You can also grab my books:
- C++17 in Detail @Leanpub - 30% off
- C++ Lambda Story @Leanpub - 22% off
Notes and links:
- Software Architecture with C++, Book Review - C++ Stories
- “Professional C++, 5th Edition” Released « Marc Gregoire’s Blog
- Book “Beginning C++20” « Marc Gregoire’s Blog
Popularity
C++ seems to have stable growth in various programming languages’ “popularity” charts this year.
Have a look:
The image is based on data from Stack Overflow survey and Tiobe Index.
It looks like C++ got a bit more love than last year! :)
Additionally, according to Github, Octoverse C++ is in 7th position (last year it was also 7th place), see here.
Your Input & Survey
On 20th December, I started my annual survey about the use of C++ in the last year. I got 782 votes, thank you!
Let’s make some summary and tables from your answers :)
C++ Standard Used
On a daily basis, which C++ Standard do you use?
Answer | 2021 | 2020 | 2019 | 2018 |
---|---|---|---|---|
Pre C++11 | 7.5% | 8.4% | 10.3% | 20% |
C++11 | 25.6% | 25.5% | 30.3% | 41% |
C++14 | 28% | 28.6% | 35% | 42% |
C++17 | 66.1% | 64.4% | 62.4% | 44% |
C++20 | 28.8% | 20.4% | 9.2% | n/a |
(The numbers for the above do not sum to 100%)
As we can see, fewer and fewer people use pre C++11. The same goes for C++11… Yet even in 2021, around 1/4 of C++ devs don’t have the luxury to work with the latest Standard.
C++17 dominates and rose from 44% in 2018 to more than 66% today. The trend for C++20 is on the way to taking over C++17 in two or more years.
Experience with C++17
What’s your experience with C++17?
Answer | 2021 | 2020 | 2019 |
---|---|---|---|
experimenting with C++17 | 28.9% | 34.9% | 39.4% |
only read basic information | 11.4% | 9.4% | 13.4% |
already using in production | 56.6% | 52.2% | 41.6% |
don’t know any of its feature | <1% | 1.6% | 2.6% |
C++17 becomes a production-ready standard, so fewer people experiment with it and move to the production code. GCC 11 also made C++17 a default dialect.
Experience with C++20
What’s your experience with C++20?
Answer | 2021 | 2020 | 2019 |
---|---|---|---|
experimenting with C++20 | 35.7% | 35.6% | 29.3% |
only read basic information | 44.1% | 50.8% | 59.8% |
already using in production | 12.8% | 6.8% | n/a |
don’t know any of its feature | 6% | 5.2% | 9.1% |
Compilers Used
What compiler do you use?
Answer | 2021 | 2020 | 2019 |
---|---|---|---|
GCC | 76% | 70.3% | 75.6% |
Clang | 51.8% | 49.6% | 58.7% |
MSVC | 54.1% | 58.5% | 56.3% |
Intel Compiler | 2.3% | 2.8% | 3.1% |
C++ Builder | 2.2% | 3% | 1.2% |
(The numbers for the above do not sum to 100%)
What IDE do you use for C++ projects
New question for 2021!
Answer | 2021 |
---|---|
Visual Studio | 48.8% |
Visual Studio Code | 47.1% |
CLion | 18.5% |
C++ Builder IDE | 2% |
Eclipse | 5.8% |
Vim/Emacs | 26.9% |
QT Creator | 15.7% |
Notepad++ | 7.4% |
XCode | 6.1% |
What additional tools do you use?
Answer | 2021 | 2020 | 2019 |
---|---|---|---|
Debugger | 80.8% | 77% | 83.6% |
Sanitizers | 38.9% | 31.9% | 40.4% |
Static Code Analysis | 58.7% | 60.9% | 55.7% |
Profilers | 49.1% | 53.4% | 56.8% |
Clang Format | 49.4% | 43.3% | 49.3% |
CMake | 67.3% | 62.3% | 66% |
Package Managers | 26.2% | 23.2% | 21.4% |
(The numbers for the above do not sum to 100%)
Best thing that happened in 2020:
Answers from this open question, based on popularity (I tried to group similar things), no special order:
- CppCon
- C++20 standardization and Compiler support for C++20
- Modules from C++20 have big impact on projects
- Full Compiler support for C++17
- Conferences: Meeting C++, Corecpp, CpponSea, C++ Russia, C++Now, and a lot of virtual C++ meetups
- Progress on C++23
- std::expected,
- The deducing this paper made it into C++23,
- std::print,
- std::executors proposal
- books like: “A Tour of C++”", “Introduction to programming with C++ for engineers” by Boguslaw Cyganek, Wiley, “Clean C++20” by Stephan Roth, Professional CMake: A Practical Guide, Mastering the C++17 STD by Arthur O’Dwyer
- C++20 books: C++17, and C++20 books from Rainer Grim, Andreas Fertig and Nicolai M. Josuttis
- Release of Visual Studio 2022, improvement of lifetime profile in VS
- Steady improvement of the language
- Overwhelmed by the Standard or hard to follow
- Better tools, 4, Unreal Engine 5, Godot Engine, docker, gcc 11, mold, Conan, clang-format, VCPKG, cmake-init, Package Managers got better, ASan support in MSVC, RAD Studio 11, Clion, VS Code
- Better libs: Filesystem library for cross-platform Windows-Linux programming, IDK, QT 6.2, SYCL
- Good resources: such as fluentcpp, cppcast, Jason Turner videos, Klaus Iglberger’s software design talks, Pluralsight courses, C++ Guides
- Compiler Explorer (godbolt.org) just keeps getting better and better
- Remote C++ Work and online talks available for a lot more people.
- C++ renaissance in various ways, large scale applications with C++
- In overall becomes more friendly
A good summary:
C++20 is being used more and more, and C++ is still a top programming language. For me, first started programming in C++ circa 1992. To me C++ is the Best Programming Language Ever. And I appreciate all the work people like yourself contribute to C++. The best thing about C++ in 2021: we are still here programming in C++ with C++20 with no end in sight.
Additionally, it’s great to hear such news like
- Completing a C++ course (or courses),
- Role change, promotions
- contribution to some open source project
- Convinced leadership to bump up to cpp17
There were also many positive opinions about the blog and the newsletter! Thank you!
“I read your newsletter, so it seems to be the best thing…”
“Your website gave me very good info about c++.”
Other surveys:
My survey is not the most important :) Have a look at other larger surveys run by those companies:
- C++ Ecosystem in 2021: 1 in 5 C++ developers are using C++20 and a third of us are not writing any unit tests at all, and other facts | The CLion Blog
- Results summary: 2021 Annual C++ Developer Survey “Lite” : Standard C++
- Stack Overflow Developer Survey 2021
- The Meeting C++ Community Survey results for 2020
What Expert says
As a bonus, here are a couple of opinions from C++ experts about the past year:
“It’s exciting to see C++ ecosystem in 2021 moving towards having a standard toolset. CMake has grown from 34% in 2017 to 55% in 2021, becoming the absolute leader several years ago. Clang is adopted by many tool vendors and has evolved because of the community, with ClangFormat and Clang-Tidy tools seen as the de-facto Standard. meanwhile, language developers considers toolability aspect of the C++ features crucial for further adoption among everyday C++ developers.”
Anastasia Kazakova, @anastasiak
“2021 continued to be challenging in terms of global pandemic. But the C++ community is very creative and continues to collaborate well. We have been fortunate to have great people that share their knowledge, publish books, write articles and run user groups. For me, the C++ twitter community is fun and very supportive. I enjoy running the San Diego C++ meetup and hoping to get back to in-person meeting very soon.”
Yacob (Kobi) Cohen-Arazi, @kobi
“For me, the biggest satisfaction in terms of C++ this year was finally full C++20 conformance in VisualStudio 2019 (latest versions) and the launch of VS 2022, my favorite C++ IDE and toolchain. This allowed my team to switch to C++20 in production and leverage the new language & library features for more succinct and robust code. After a disappointing 2020, C++ conferences in 2021 were back in full swing (no cancellations and lots of attendees), albeit in online format. CppCon was an interesting hybrid experience, but with limited onsite attendance.”
Victor Ciura, @ciura_victor
“My view of C++ in 2021 was strongly coloured by the future and the past. Helping write a book on the Core Guidelines reminded me of so many things we used to do and just don’t anymore because we have better ways.
Writing a course on what’s new in C++20 got me excited about all the things that will be so much easier in everyday code now. Time zones, composing range views, concept-powered error messages, spaceship operator - large and small these additions will keep making it easier to write fast and correct C++.”
Kate Gregory, @gregcons
“I am deeply worried about the path the C++ standard committee took in 2021. While not willing to fix a severe bug in the range-based for loop known for 10 years now, we prefer to release features that are not mature without allowing to fix them due to backward compatibility. Chaos and complexity grows significantly and it doesn’t look good for the future of C++.”
Nicolai Josuttis, @NicoJosuttis
Summary
Thanks for reading this long blog post!
So many things, events, tools, C++ features.
Are we in good shape in 2021?
It was a challenging year for many of us. We hoped that the pandemic would be over, but it’s not, and we need/had to adapt. The standardization process for C++23 was also hit, and it looks like it’s harder to process more extensive features. Yet the new Standard is in good condition, and in February, we should see its “feature freeze” state.
On the other hand, this year was very positive regarding the adoption of C++17 and C++20. C++17 is now a default dialect for GCC 11, and it’s now the “production-ready” Standard. As you can see in my survey reports, many developers use it daily. C++20 is now completed in almost all compilers, so it’s also an excellent time to introduce it into production.
The recent years are also filled with various improvements and new tools that improve our experience with the language. Better IDEs, smart suggestions core guideline checkers, linters, code analysers, clang format, sanitizers, package managers. While we could complain about the lack of tooling 10 years ago, this year, it’s not an option… and it’s even hard to keep up with all cool things that happen.
To summarize, my big things for 2021:
- C++20 adoption
- C++23 ongoing
- Better tools
Additionally, as a side effect of current times, many companies opened for remote work, even after pandemic times. Such change gives us, C++ programmers, even more options for employment. Similarly, we can join many online meetings and take benefit of various meetups and conferences. While it’s probably not as good as physical events, it can reduce costs and open it for a larger audience.
Best wishes!
Your Turn
- What do you think about C++ in 2021?
- What was the most important event/news for you?
- Did I miss something?
Join the discussion below the article and also in this reddit/cpp thread.
I've prepared a valuable bonus if you're interested in Modern C++!
Learn all major features of recent C++ Standards!
Check it out here: