July 2021

Using C++ Modules in MSVC from the Command Line Part 1--Cameron DaCamara

Time to get familiar!

Using C++ Modules in MSVC from the Command Line Part 1

by Cameron DaCamara

From the article:

In this three-part series we will explore how to build modules and header units from the command line as well as how to use/reference them.

The goal of this post is to serve as a brief tour of compiling and using primary module interfaces from the command line and the options we use...

CppCon 2019 From Algorithm to Generic, Parallel Code--Dietmar Kuhl

Registration is now open for CppCon 2021, which starts on October 24 and will be held both in person and online. To whet your appetite for this year’s conference, we’re posting videos of some of the top-rated talks from our most recent in-person conference in 2019 and our online conference in 2020. Here’s another CppCon talk video we hope you will enjoy – and why not register today for CppCon 2021 to attend in person, online, or both!

From Algorithm to Generic, Parallel Code

by Dietmar Kuhl

Summary of the talk:

This presentation starts with a parallel algorithm as it is described in books and turns it into a generic implementation. Multiple options for running the algorithm concurrently based on different technologies (OpenMP, Threading Building Blocks, C++ standard-only) are explored.

Using parallel algorithms seems like an obvious way to improve the performance of operations. However, to utilize more processsing power often requires additional work to be done and depending on available resources and the size of the problem the parallel version may actually take longer than a sequential version. Looking at the actual implementation for an algorithm should clarify some of the tradeoffs.

Showing how a parallel algorithm can be implemented should also demonstrate how such an algorithm can be done when there is no suitable implementation available from the [standard C++] library. As the implementation of a parallel algorithms isn't trivial it should also become clear that using a readily available implementation is much preferable.

3 Test events for Meeting C++ 2021

In August, Meeting C++ online will host 3 test events on 3 different online platforms to test which one should be chosen to host Meeting C++ 2021.

Testing online platforms for Meeting C++ 2021

by Jens Weller

From the article:

For this year, the conference of Meeting C++ is online only. I've made this decision last year, when it was clear that this is an option that is available. With predictions of a 4th Wave in Europe in Fall, it seems to be the right decision. Since 2020 Meeting C++ online gathered a community of folks interested in C++ and attending online events into a User Group. With one year of experience in hosting online events, its time to move forward and see which platform should host these events in the future.

5th August: Teaching C++ with Victor Ciura
12th August: Ivan Cukic - Members through a looking glass!
19th August: Peter Sommerlad - Beyond rule of zero

2021-07 Mailing Available

The 2021-07 mailing of new standards papers is now available.


WG21 Number Title Author Document Date Mailing Date Previous Version Subgroup
N4894 Business Plan and Convener's Report Herb Sutter 2021-07-13 2021-07   All of WG21
P0288R6 move_only_function (was any_invocable) Ryan McDougall, Matt Calabrese 2021-07-13 2021-07 P0288R5 LWG Library
P0847R7 Deducing this Barry Revzin 2021-07-13 2021-07 P0847R6 CWG Core
P1206R4 Conversions from ranges to containers Corentin Jabot 2021-07-14 2021-07 P1206R3 LEWG Library Evolution
P1726R5 Pointer lifetime-end zap (informational/historical) Paul E. McKenney 2021-07-14 2021-07 P1726R4 SG1 Concurrency and Parallelism,SG12 Undefined and Unspecified Behavior,EWG Evolution
P2036R2 Changing scope for lambda trailing-return-type Barry Revzin 2021-07-22 2021-07 P2036R1 CWG Core
P2066R8 Suggested draft TS for C++ Extensions for Minimal Transactional Memory Jens Maurer 2021-07-15 2021-07 P2066R7 LEWG Library Evolution,CWG Core
P2093R7 Formatted output Victor Zverovich 2021-07-04 2021-07 P2093R6 SG16 Unicode,LEWG Library Evolution
P2167R1 Improved Proposed Wording for LWG 2114 (contextually convertible to bool) Daniel Krügler 2021-07-15 2021-07 P2167R0 LWG Library
P2198R2 Freestanding Feature-Test Macros and Implementation-Defined Extensions Ben Craig 2021-07-10 2021-07 P2198R1 SG10 Feature Test,LEWG Library Evolution
P2242R3 Non-literal variables (and labels and gotos) in constexpr functions Ville Voutilainen 2021-07-13 2021-07 P2242R2 CWG Core
P2249R1 Mixed comparisons for smart pointers Giuseppe D'Angelo 2021-07-14 2021-07 P2249R0 LEWG Library Evolution
P2273R2 Making std::unique_ptr constexpr Andreas Fertig 2021-07-05 2021-07 P2273R1 LEWG Library Evolution
P2290R2 Delimited escape sequences Corentin Jabot 2021-07-15 2021-07 P2290R1 SG22 Compatability,EWG Evolution
P2295R5 Support for UTF-8 as a portable source file encoding Corentin Jabot 2021-07-16 2021-07 P2295R4 SG22 Compatability,EWG Evolution
P2300R1 `std::execution` Michał Dominiak 2021-07-06 2021-07 P2300R0 SG1 Concurrency and Parallelism,LEWG Library Evolution
P2316R1 Consistent character literal encoding Corentin Jabot 2021-07-11 2021-07 P2316R0 SG22 Compatability,EWG Evolution
P2338R1 Freestanding Library: Character primitives and the C library Ben Craig 2021-07-10 2021-07 P2338R0 SG14 Low Latency,SG22 Compatability,LEWG Library Evolution
P2347R1 Argument type deduction for non-trailing parameter packs Corentin Jabot 2021-07-15 2021-07 P2347R0 EWG Evolution
P2350R1 constexpr class Andreas Fertig 2021-07-15 2021-07 P2350R0 EWG Evolution
P2362R1 Remove non-encodable wide character literals and multicharacter wide character literals Peter Brett 2021-07-15 2021-07 P2362R0 EWG Evolution
P2392R1 Pattern matching using "is" and "as" Herb Sutter 2021-07-19 2021-07 P2392R0 EWG Evolution
P2401R0 Add a conditional noexcept specification to std::exchange Giuseppe D'Angelo 2021-07-14 2021-07   LEWGI SG18: LEWG Incubator,LEWG Library Evolution
P2402R0 A free function linear algebra interface based on the BLAS (slides) Mark Hoemmen 2021-06-29 2021-07   LEWG Library Evolution
P2403R0 Presentation on P2300 - std::execution Michael Garland 2021-07-06 2021-07   SG1 Concurrency and Parallelism,LEWG Library Evolution
P2404R0 Relaxing equality_comparable_with's and three_way_comparable_with's common reference requirements to Justin Bassett 2021-07-25 2021-07   LWG Library
P2405R0 nullopt_t and nullptr_t should both have operator and operator== Justin Bassett 2021-07-25 2021-07   LWG Library
P2406R0 Fix counted_iterator interaction with input iterators Yehezkel Bernat 2021-07-11 2021-07   SG9 Ranges
P2407R0 Freestanding Library: Partial Classes Emil Meissner 2021-07-12 2021-07   LEWG Library Evolution
P2408R0 Ranges views as inputs to non-Ranges algorithms David Olsen 2021-07-14 2021-07   LEWG Library Evolution
P2409R0 Requirements for Usage of C++ Modules at Bloomberg Daniel Ruoso 2021-07-12 2021-07   SG15 Tooling
P2410R0 Type-and-resource safety in modern C++ Bjarne Stroustrup 2021-07-22 2021-07   All of WG21
P2411R0 Thoughts on pattern matching Bjarne Stroustrup 2021-07-22 2021-07   All of WG21
P2412R0 Minimal module support for the standard library Bjarne Stroustrup 2021-07-22 2021-07   All of WG21
P2413R0 Remove unsafe conversions of unique_ptr Lénárd Szolnoki 2021-07-25 2021-07   LEWGI SG18: LEWG Incubator
P2414R0 Pointer lifetime-end zap proposed solutions Paul E. McKenney 2021-07-14 2021-07   EWG Evolution
P2415R0 What is a view? Barry Revzin 2021-07-14 2021-07   LEWG Library Evolution
P2416R0 Presentation of requirements in the standard library Jens Maurer 2021-07-15 2021-07   LWG Library
P2417R0 A more constexpr bitset Daniil Goncharov 2021-07-25 2021-07   LEWG Library Evolution,LWG Library

CLion 2021.2: CMake Presets, GNU Autotools Projects, Debugger Updates, Lifetimes Analysis

CLion 2021.2 is here, helping you keep up with the changing C++ ecosystem!

CLion 2021.2: CMake Presets, GNU Autotools Projects, Debugger Updates, New Static Analysis, and More

by Anastasia Kazakova

From the article:

The C++ ecosystem is evolving, and so too is our cross-platform C/C++ IDE. CLion 2021.2 can help you by protecting your code from typical C++ memory safety issues, simplifying your build configurations, and making debugging easier and more effective.

  • Project models
    • Initial support for CMake Presets
    • CMake New Project templates
    • Support for GNU Autotools projects and Make preconfiguration steps
  • Debugger
    • Relaxed breakpoints, and breakpoints in disassembly view
    • Preview tab for the debugger
    • Remote LLDB and bundled LLDB 12
    • Better Natvis support and support for minidumps on Windows
    • FreeRTOS thread view
  • Lifetimes analysis, for catching common issues like dangling pointers and escaping from a local scope
  • Integration with Cling, an interactive C++ interpreter
  • Profiling in remote mode and on WSL
  • Easier Docker and WSL configuration
  • Text search in Local History and many VCS updates
  • Localized CLion UI in Chinese, Korean, and Japanese

Join the review and voting session for Meeting C++ 2021

Until next week Tuesday you can start your voting session and give feedback on the talks for Meeting C++ 2021.

Starting the review and feedback session for Meeting C++ 2021

by Jens Weller

From the article:

Like every year, Meeting C++ gives the C++ community the chance to review the talks and give feedback on them for a short period. You'll be able to leave a comment on each talk and vote between 0 - 5, where 5 is best.

C++ Ecosystem in 2021, JetBrains research

Every year we ask thousands of developers, with various backgrounds from all around the globe, dozens of questions, which we have localized into many different languages. We then clean, weigh, and process the data carefully, and validate it against other data sources. Our goal is to extract the key trends, which we will present through infographics to the public. This data is used across JetBrains to help our team make the right decisions on both global and product-levels. We are happy to share this data with the community so we can all thrive together!

C++ Ecosystem in 2021

by Anastasia Kazakova

The article shares the recent findings and the comments from Matt Godbolt (creator of Compiler Explorer) and Andreas Kling (creator of SerenityOS):

  • In 2021, 1 in 5 C++ developers are using the latest officially signed C++20 standard even though it’s not yet fully supported in all major compilers!
  • Top-3 C++20 big features and how many developers plan to adopt them soon: 48% for Modules, 46% for Concepts, and 33% for Coroutines.
  • The majority of C++ developers prefer code analysis tools bundled into their IDEs.
  • Top-3 most popular build systems in C++ through the last 5 years is CMake, Makefile, msbuild.
  • A third of developers not writing any unit tests at all.

C++ is awesome, here's why...--Vinit Jogani

What do you think?

C++ is awesome, here's why...

by Vinit Jogani

From the article:

C++ is, hands down, one of the most misunderstood languages in software developer pop culture today. People often compare it to C because it is a "low-level" language. Consequently, it has received a reputation of being an esoteric language that only the performance paranoid care about. This is far from true. I have been programming in C++ as my primary language for a while now and the developer experience is actually really good -- much better than I had imagined it would be.

In this article, I want to debunk some common myths about C++ that I heard before I started using it. Then, I want to talk about the actual superpowers that C++ provides you that most other languages do not...

Four more days for CppCon Early Bird discount -- EB ends July 31

cppcon-004.pngIf you've been thinking about registering for CppCon 2021 in person or online, this week is a great time -- you have a few days left to get the Early Bird discount!

Early Bird Deadline is This Week

by Jon Kalb

The article:

If you’ve been thinking about registering for CppCon 2021 onsite or online, now is the time — EarlyBird discount ends this week!

Because of the health and travel situation, we know that many who want to attend onsite don’t know for certain yet if they can make it onsite. Here are some things to help ease your mind about registering:

  • Any Online Early Bird registration can be upgraded later (even after the Early Bird deadline) to an Early Bird rate onsite registration. So if you get an Online Early Bird registration now, you will lock in the Early Bird rate if you later convert it to any of our onsite registration options.
  • Any onsite registration can be converted to an online registration with full refund of the difference in rate, no questions asked.
  • Any registration can be cancelled for a full refund with no questions asked until the day before the conference (October 23rd). So if you plan to attend onsite and get an Early Bird onsite registration now, you can get your money back in full if it turns out international travel restrictions or any other issues get in the way.
  • The Gaylord Rockies‘ refund policy for hotel room reservations is a complete refund with notice that is three working days prior to arrival date.

These registration/refund policies and the low price on Online Early Bird registration make that a no-brainer. Online registration gives you exclusive early access to all the videos that we’ll be adding to the CppCon YouTube channel, but it is easy to justify the cost of Online Early Bird registration even if you are only able to spend one day (or even just a couple of evenings) watching sessions and engaging online with CppCon attendees in our awesome virtual venue. Early access to session videos is just an amazing bonus.

Don’t let COVID deprive you of the opportunity to engage with the C++ community in 2021!

In any case, you can register now to lock in the Early Bird rate. We look forward to seeing many of you in person or online at CppCon 2021 for what will surely be one of the most memorable CppCons ever.