January 2022

constexpr Functions--Rainer Grimm

The series continue.

constexpr Functions

by Rainer Grimm

From the article:

Today, I continue my story about programming at compile time. After template metaprogramming, the type-traits library, today's topic is constexpr functions in particular...

C++ Templates: How to Iterate through std::tuple: the Basics--Bartlomiej Filipek

Did you ever need it?

C++ Templates: How to Iterate through std::tuple: the Basics

by Bartlomiej Filipek

From the article:

If you have a standard container, it’s easy to use a range-based for loop and iterate over its elements at runtime. How about std::tuple? In this case, we cannot use a regular loop as it doesn’t “understand” tuple’s compile-time list of arguments. That’s why in this article, I’ll show you a few techniques you can use to run through all tuple’s entries...

The Usual Arithmetic Confusions--Shafik Yaghmour

Do you know the conversions?

The Usual Arithmetic Confusions

by Shafik Yaghmour

From the article:

There are a lot of aspects of C++ that are not well understood and lead to all sorts of confusion. The usual arithmetic conversions and the integral promotions are two such aspects. Certain binary operators (arithmetic, relational and spaceship) require their operands to have a common type. The usual arithmetic conversions are the set of steps that gets operands to a common type. While the integral promotions brings integral types smaller than int and unsigned int to either int or unsigned int depending on which one can represent all the values of the source type. This is one of the areas in C++ that comes directly from C, so pretty much all of these examples applies to C as well as C++...

Meeting C++ in 2022

An overview on what Meeting C++ plans for 2022:

Meeting C++ in 2022

by Jens Weller

From the article

Giving you a short overview on what Meeting C++ plans for 2022!

The next two events happening at the Meeting C++ online user group:

Also the next Meeting C++ job fair is on the 15th and 16th March, I plan to host one per quarter of each fair.

Meeting C++ 2022

Its going to be a hybrid event in Berlin and online from November 16-19th. I'll start the conference season for Meeting C++ again in April, so expect further annoucements and the opening for the call for talks then. Same goes for tickets, sponsorship and more.


In February Meeting C++ offers two trainings

    Modern C++ Design Patterns by Klaus Iglberger
    The big four of C++ 20 by Rainer Grimm

Fixing the crash that seems to be on a std::move operation--Raymond Chen

Which way do you prefer?

Fixing the crash that seems to be on a std::move operation

by Raymond Chen

From the article:

Last time, we looked at a crash that was root-caused to an order of evaluation bug if compiled as C++14. One solution to the problem is to switch to C++17 mode, but presumably the customer isn’t willing to make that drastic a change to their product yet. Maybe there’s something we can do that is less disruptive...

How we used C++20 to eliminate an entire class of runtime bugs--Cameron DaCamara

Always more powerful.

How we used C++20 to eliminate an entire class of runtime bugs

by Cameron DaCamara

From the article:

C++20 is here and has been supported in MSVC since 16.11, but today’s post is not about how you can use it, but rather how we used it to effectively eliminate an entire class of runtime bugs by hoisting a check into compile-time. Let’s get right into it!

C++ on Sea Early Bird Tickets and Call for Speakers

C++ on Sea has opened its Call for Speakers (including workshops), which runs until 6th February

The 2022 Call for Speakers is now open

by C++ on Sea

About the conference

And Early Bird tickets are now selling up to the end of February

Early bird tickets now on sale

This year's event will be back in person, in Folkestone, UK, overlooking the sea!

Speaker's travel and accomodation expenses are covered - so get your submissions in before the deadline.

CopperSpice: Auto is Not a Data Type

New video on the CopperSpice YouTube Channel:

Auto is Not a Data Type

by Barbara Geller and Ansel Sermersheim

About the video:

Did you think auto was added in C++11? Is auto always used in place of a data type? Watch our new video as we answer these questions and explain how auto interacts with overload resolution and concepts.

Please take a look and remember to subscribe!

2022-01 Mailing Available

The 2022-01 mailing of new standards papers is now available.


WG21 Number Title Author Document Date Mailing Date Previous Version Subgroup
P0447R18 Introduction of std::hive to the standard library Matt Bentley 2021-12-21 2022-01 P0447R17 SG14 Low Latency,LEWG Library Evolution,All of WG21
P0792R6 function_ref: a non-owning reference to a Callable Vittorio Romeo 2022-01-16 2022-01 P0792R5 LEWG Library Evolution,LWG Library
P1018R14 C++ Language Evolution status  pandemic edition  2021/09–2022/01 JF Bastien 2022-01-13 2022-01 P1018R13 EWG Evolution,All of WG21
P1083R4 Move resource_adaptor from Library TS to the C++ WP Pablo Halpern 2022-01-01 2022-01 P1083R3 LEWG Library Evolution
P1206R7 Conversions from ranges to containers Corentin Jabot 2022-01-21 2022-01 P1206R6 LWG Library
P1240R2 Scalable Reflection Daveed Vandevoorde 2022-01-14 2022-01 P1240R1 SG7 Reflection
P1664R6 reconstructible_range - a concept for putting ranges back together JeanHeyd Meneide 2021-12-25 2022-01 P1664R5 SG9 Ranges,LEWG Library Evolution
P1841R2 Wording for Individually Specializable Numeric Traits Walter E Brown 2022-01-14 2022-01 P1841R1 LWG Library
P1854R3 Conversion to literal encoding should not lead to loss of meaning Corentin Jabot 2022-01-15 2022-01 P1854R2 EWG Evolution
P1885R9 Naming Text Encodings to Demystify Them Corentin Jabot 2022-01-15 2022-01 P1885R8 LEWG Library Evolution
P1899R2 stride_view Christopher Di Bella, Tim Song 2021-12-23 2022-01 P1899R1 SG9 Ranges,LEWG Library Evolution
P2000R3 Direction for ISO C++ Daveed Vandevoorde 2022-01-06 2022-01 P2000R2 All of WG21,Direction Group
P2079R2 System execution context Lee Howes 2022-01-14 2022-01 P2079R1 SG1 Concurrency and Parallelism,LEWG Library Evolution
P2093R12 Formatted output Victor Zverovich 2021-12-20 2022-01 P2093R11 LWG Library
P2165R3 Compatibility between tuple, pair and tuple-like objects Corentin Jabot 2022-01-18 2022-01 P2165R2 LEWG Library Evolution
P2248R4 Enabling list-initialization for algorithms Giuseppe D'Angelo 2022-01-03 2022-01 P2248R3 SG6 Numerics,SG9 Ranges,LEWG Library Evolution
P2249R4 Mixed comparisons for smart pointers Giuseppe D'Angelo 2022-01-11 2022-01 P2249R3 LEWG Library Evolution
P2286R5 Formatting Ranges Barry Revzin 2022-01-15 2022-01 P2286R4 LEWG Library Evolution
P2286R6 Formatting Ranges Barry Revzin 2022-01-19 2022-01 P2286R5 LEWG Library Evolution
P2300R4 `std::execution` Michał Dominiak 2022-01-19 2022-01 P2300R3 SG1 Concurrency and Parallelism,LEWG Library Evolution
P2302R3 std::ranges::contains Christopher Di Bella 2022-01-19 2022-01 P2302R2 LEWG Library Evolution
P2303R4 Basic lambdas for C Jens Gustedt 2021-12-24 2022-01 P2303R3 SG22 Compatability
P2304R3 Improve type generic programming Jens Gustedt 2021-12-24 2022-01 P2304R2 SG22 Compatability
P2305R4 Type inference for variable definitions and function returns Jens Gustedt 2021-12-24 2022-01 P2305R3 SG22 Compatability
P2306R3 Type-generic lambdas Jens Gustedt 2021-12-24 2022-01 P2306R2 SG22 Compatability
P2310R1 Revise spelling of keywords Jens Gustedt 2021-12-31 2022-01 P2310R0 SG22 Compatability
P2311R2 Make false and true first-class language features Jens Gustedt 2021-12-30 2022-01 P2311R1 SG22 Compatability
P2324R2 Labels at the end of compound statements (C compatibility) Martin Uecker 2022-01-14 2022-01 P2324R1 SG22 Compatability,CWG Core
P2363R3 Extending associative containers with the remaining heterogeneous overloads Konstantin Boyarinov 2022-01-19 2022-01 P2363R2 LEWG Library Evolution
P2370R2 Stacktrace from exception Andrei Nekrashevich 2022-01-11 2022-01 P2370R1 LEWG Library Evolution,LWG Library
P2375R1 Generalisation of nth_element to a range of nths Johan Lundberg 2022-01-14 2022-01 P2375R0 SG9 Ranges,EWG Evolution
P2404R1 Move-only types for equality_comparable_with, totally_ordered_with, and three_way_comparable_with Justin Bassett 2021-12-24 2022-01 P2404R0 SG9 Ranges,LEWGI SG18: LEWG Incubator,LEWG Library Evolution,LWG Library
P2404R2 Move-only types for equality_comparable_with, totally_ordered_with, and three_way_comparable_with Justin Bassett 2022-01-19 2022-01 P2404R1 SG9 Ranges,LEWGI SG18: LEWG Incubator,LEWG Library Evolution,LWG Library
P2424R0 Abbreviated Parameters Mihail Naydenov 2022-01-14 2022-01   EWGI SG17: EWG Incubator
P2437R1 Support for #warning Aaron Ballman 2022-01-13 2022-01 P2437R0 CWG Core
P2447R2 std::span and the missing constructor Federico Kircheis 2022-01-21 2022-01 P2447R1 LEWG Library Evolution
P2448R1 Relaxing some constexpr restrictions Barry Revzin 2022-01-15 2022-01 P2448R0 CWG Core
P2457R0 2021 December Library Evolution Poll Outcomes Bryce Adelstein Lelbach 2022-01-14 2022-01   LEWG Library Evolution
P2458R0 2022 January Library Evolution Polls Bryce Adelstein Lelbach 2022-01-20 2022-01   LEWG Library Evolution
P2468R2 The Equality Operator You Are Looking For Barry Revzin, Bjarne Stroustrup, Cameron DaCamara, Daveed Vandevoorde, Gabriel Dos Reis, Herb Sutter, Jason Merrill, Jonathan Caves, Richard Smith, Ville Voutilainen 2022-01-14 2022-01 P2468R1 EWG Evolution,CWG Core
P2474R1 views::repeat Michał Dominiak 2022-01-18 2022-01 P2474R0 SG9 Ranges,LEWG Library Evolution
P2494R1 Relaxing range adaptors to allow for move only types Michał Dominiak 2022-01-17 2022-01 P2494R0 SG9 Ranges,LEWG Library Evolution
P2498R1 Forward compatibility of text_encoding with additional encoding registries Peter Brett 2022-01-14 2022-01 P2498R0 SG16 Unicode,LEWG Library Evolution
P2507R1 Limit [[assume]] to conditional-expressions Peter Brett 2022-01-04 2022-01 P2507R0 EWG Evolution
P2508R1 Exposing std::basic-format-string Barry Revzin 2022-01-18 2022-01 P2508R0 LEWG Library Evolution
P2511R0 Beyond operator(): NTTP callables in type-erased call wrappers Zhihao Yuan 2022-01-14 2022-01   LEWG Library Evolution
P2512R0 SG16: Unicode meeting summaries 2021-06-09 through 2021-12-15 Tom Honermann 2021-12-23 2022-01   SG16 Unicode
P2513R0 char8_t Compatibility and Portability Fixes JeanHeyd Meneide 2022-01-09 2022-01   SG16 Unicode,EWG Evolution
P2514R0 std::breakpoint René Ferdinand Rivera Morell 2022-01-02 2022-01   SG15 Tooling,LEWG Library Evolution
P2515R0 std::is_debugger_present René Ferdinand Rivera Morell 2022-01-02 2022-01   SG15 Tooling,LEWG Library Evolution
P2516R0 string_view is implicitly convertible from what? Victor Zverovich 2022-01-07 2022-01   LEWG Library Evolution
P2517R0 Add a conditional noexcept specification to std::apply Hewill Kang 2022-01-14 2022-01   LEWG Library Evolution
P2520R0 move_iterator should be a random access iterator Barry Revzin 2022-01-15 2022-01   LEWG Library Evolution
P2521R0 Contract support -- Working Paper Andrzej Krzemieński 2022-01-17 2022-01   SG21 Contracts
P2523R0 Request for re-inclusion of std::hive proposal in C++23 Matt Bentley 2022-01-14 2022-01   SG14 Low Latency,LEWG Library Evolution
P2524R0 SG14: Low Latency/Games/Embedded/Finance/Simulation 2020/12/09-2022/01/12 Michael Wong 2022-01-15 2022-01   SG14 Low Latency
P2525R0 SG19: Machine Learning Meeting Minutes 2020/12/10-2022/01/13 Michael Wong 2022-01-15 2022-01   SG19 Machine Learning
P2527R0 std::variant_alternative_index and std::variant_alternative_index_v Alex Christensen 2022-01-18 2022-01   LEWGI SG18: LEWG Incubator