April 2021

2021-04 Mailing Available

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

 

WG21 Number Title Author Document Date Mailing Date Previous Version Subgroup
P0323R10 std::expected JF Bastien 2021-04-15 2021-04 P0323R9 LWG Library
P0447R13 Introduction of std::colony to the standard library Matt Bentley 2021-03-24 2021-04 P0447R12 SG14 Low Latency,LEWG Library Evolution,All of WG21
P1121R3 Hazard Pointers: Proposed Interface and Wording for Concurrency TS 2 Maged M. Michael 2021-04-09 2021-04 P1121R2 All of WG21
P1122R3 Proposed Wording for Concurrent Data Structures: Read-Copy-Update (RCU) Paul E. McKenney 2021-03-25 2021-04 P1122R2 LWG Library
P1132R7 out_ptr - a scalable output pointer abstraction JeanHeyd Meneide 2021-04-16 2021-04 P1132R6 LWG Library
P1169R1 static operator() Barry Revzin 2021-04-05 2021-04 P1169R0 EWG Evolution
P1401R5 Narrowing contextual conversions to bool Andrzej Krzemieński 2021-04-12 2021-04 P1401R4 CWG Core
P1664R3 reconstructible_range - a concept for putting ranges back together JeanHeyd Meneide 2021-04-16 2021-04 P1664R2 LEWG Library Evolution
P1673R3 A free function linear algebra interface based on the BLAS Mark Hoemmen 2021-04-14 2021-04 P1673R2 LEWG Library Evolution
P1706R3 Programming Language Vulnerabilities for Safety Critical C++ Michael Wong 2021-04-14 2021-04 P1706R2 SG12 Undefined and Unspecified Behavior
P1708R4 Simple Statistical Functions Richard Dosselman 2021-04-14 2021-04 P1708R3 SG6 Numerics,SG19 Machine Learning,LEWG Library Evolution
P1847R4 Make declaration order layout mandated Pal Balog 2021-04-12 2021-04 P1847R3 CWG Core
P1938R3 if consteval Barry Revzin 2021-03-22 2021-04 P1938R2 EWG Evolution
P1949R7 C++ Identifier Syntax using Unicode Standard Annex 31 Steve Downey 2021-04-14 2021-04 P1949R6 CWG Core
P1967R3 #embed - a simple, scannable preprocessor-based resource acquisition method JeanHeyd Meneide 2021-04-15 2021-04 P1967R2 EWG Evolution
P1989R2 Range constructor for std::string_view 2: Constrain Harder Corentin Jabot 2021-03-17 2021-04 P1989R1 LWG Library
P2128R4 Multidimensional subscript operator Corentin Jabot 2021-03-18 2021-04 P2128R3 EWG Evolution
P2128R5 Multidimensional subscript operator Corentin Jabot 2021-04-13 2021-04 P2128R4 EWG Evolution
P2168R2 generator: A Synchronous Coroutine Generator Compatible With Ranges Corentin Jabot 2021-03-22 2021-04 P2168R1 LEWG Library Evolution
P2186R2 Removing Garbage Collection Support JF Bastien 2021-04-16 2021-04 P2186R1 CWG Core,LWG Library
P2201R1 Mixed string literal concatenation Jens Maurer 2021-04-12 2021-04 P2201R0 CWG Core
P2223R2 Trimming whitespaces before line splicing Corentin Jabot 2021-04-13 2021-04 P2223R1 EWG Evolution,CWG Core
P2251R1 Require span & basic_string_view to be Trivially Copyable Nevin Liber 2021-03-19 2021-04 P2251R0 LEWG Library Evolution
P2255R1 A type trait to detect reference binding to temporary Tim Song 2021-04-11 2021-04 P2255R0 EWG Evolution,LEWG Library Evolution
P2265R1 Renaming any_invocable Kevlin Henney 2021-04-17 2021-04 P2265R0 LEWG Library Evolution
P2273R1 Making std::unique_ptr constexpr Andreas Fertig 2021-04-13 2021-04 P2273R0 LEWG Library Evolution
P2283R1 constexpr for specialized memory algorithms Michael Schellenberger Costa 2021-04-18 2021-04 P2283R0 LEWG Library Evolution
P2295R1 Correct UTF-8 handling during phase 1 of translation Corentin Jabot 2021-03-21 2021-04 P2295R0 SG16 Unicode,SG22 Compatability,EWG Evolution
P2295R2 Support for UTF-8 as a portable source file encoding Corentin Jabot 2021-04-13 2021-04 P2295R1 SG16 Unicode,SG22 Compatability,EWG Evolution
P2295R3 Support for UTF-8 as a portable source file encoding Corentin Jabot 2021-04-15 2021-04 P2295R2 SG16 Unicode,SG22 Compatability,EWG Evolution
P2303R2 Function literals and value closures Jens Gustedt 2021-03-29 2021-04 P2303R1 SG22 Compatability
P2304R1 Improve type generic programming Jens Gustedt 2021-03-29 2021-04 P2304R0 SG22 Compatability
P2305R2 Type inference for variable definitions and function returns Jens Gustedt 2021-03-29 2021-04 P2305R1 SG22 Compatability
P2306R1 Type-generic lambdas Jens Gustedt 2021-03-29 2021-04 P2306R0 SG22 Compatability
P2307R1 Lvalue closures Jens Gustedt 2021-03-29 2021-04 P2307R0 SG22 Compatability
P2312R1 Introduce the nullptr constant Jens Gustedt 2021-03-31 2021-04 P2312R0 SG22 Compatability
P2318R1 A Provenance-aware Memory Object Model for C Jens Gustedt 2021-03-24 2021-04 P2318R0 SG22 Compatability
P2321R1 zip Tim Song 2021-04-11 2021-04 P2321R0 LEWG Library Evolution,LWG Library
P2322R2 ranges::fold Barry Revzin 2021-04-14 2021-04 P2322R1 LEWG Library Evolution
P2325R2 Views should not be required to be default constructible Barry Revzin 2021-04-23 2021-04 P2325R1 LEWG Library Evolution
P2327R0 De-deprecating volatile compound assignment Paul Bendixen 2021-04-14 2021-04   SG14 Low Latency,EWG Evolution
P2337R0 Less constexpr for <cmath> Nicholas G Timmons 2021-03-22 2021-04   SG6 Numerics,LEWG Library Evolution
P2342R0 For a Few Punctuators More Corentin Jabot 2021-03-25 2021-04   SG7 Reflection,EWG Evolution
P2345R0 Relaxing Requirements of Moved-From Objects Sean Parent 2021-04-15 2021-04   LEWG Library Evolution,LWG Library
P2348R0 Whitespaces Wording Revamp Corentin Jabot 2021-04-14 2021-04   CWG Core
P2350R0 constexpr class Andreas Fertig 2021-04-13 2021-04   EWG Evolution
P2352R0 SG16: Unicode meeting summaries 2020-12-09 through 2021-03-24 Tom Honermann 2021-04-04 2021-04   SG16 Unicode
P2353R0 Metaprograms and fragments are needed in comma-separated contexts David Rector 2021-04-05 2021-04   SG7 Reflection
P2355R0 Postfix fold expressions S. Davis Herring 2021-04-12 2021-04   EWG Evolution
P2356R0 Implementing Factory builder on top of P2320 Matus Chochlik 2021-04-09 2021-04   SG7 Reflection
P2358R0 Defining Contracts Gašper Ažman 2021-04-15 2021-04   SG21 Contracts
P2360R0 Extend init-statement to allow alias-declaration Jens Maurer 2021-04-13 2021-04   EWG Evolution
P2361R0 Unevaluated string literals Corentin Jabot 2021-04-14 2021-04   SG16 Unicode,EWG Evolution
P2362R0 Make obfuscating wide character literals ill-formed Peter Brett 2021-04-14 2021-04   SG16 Unicode,EWG Evolution
P2363R0 Extending associative containers with the remaining heterogeneous overloads Konstantin Boyarinov 2021-04-15 2021-04   LEWG Library Evolution

The most popular C++ standard features

The next article on the results from the Meeting C++ survey

The most popular C++ standard features

by Jens Weller

From the article:

Continuing the series about the Meeting C++ survey results with a look at the standard features. Last week I compared the ISOCPP survey to the one of Meeting C++.

When I was looking into the questions I could ask in the survey tool, it came to my mind that it would be interesting to know more about the details of standards, not just asking for which standard folks use in various ways. So in this blog post, I'm going to show you the questions about standard feature usage.

C++ coroutines: How do I create a coroutine that terminates on an unhandled exception?--Raymond Chen

The series continue.

C++ coroutines: How do I create a coroutine that terminates on an unhandled exception?

by Raymond Chen

From the article:

Last time, we saw that declaring a coroutine as noexcept doesn’t do what you think. The noexcept specific says that production of the coroutine does not throw an exception, but it says nothing about what happens during execution of the coroutine. If an exception occurs inside the coroutine, the promise’s unhandled_exception method decides what happens...

GCC 11 Release Series

Improved.

GCC 11 Release Series

From the article:

This page is a "brief" summary of some of the huge number of improvements in GCC 11. You may also want to check out our Porting to GCC 11 page and the full GCC documentation.

C++ coroutines: What does it mean when I declare my coroutine as noexcept?--Raymond Chen

The series continue.

C++ coroutines: What does it mean when I declare my coroutine as noexcept?

by Raymond Chen

From the article:

Suppose you want a coroutine that terminates on unhandled exceptions, or equivalently (looking at it from the consumer side) a coroutine that never throws an exception when awaited. For regular functions, the way to say this is to put the noexcept exception specification on your function declaration...

C++ coroutines: Improving cold-start coroutines which complete synchronously--Raymond Chen

The series continue.

C++ coroutines: Improving cold-start coroutines which complete synchronously

by Raymond Chen

From the article:

Last time, we learned that the naïve implementation of cold-start coroutines is susceptible to stack build-up. What we want is for await_suspend to return false if the coroutine completed synchronously. This is tricky because that reintroduces a race condition where the coroutine runs asynchronously and completes at the same time we try to transition from synchronous to asynchronous behavior in the awaiter...

C++ coroutines: Cold-start coroutines--Raymond Chen

The series continue.

C++ coroutines: Cold-start coroutines

by Raymond Chen

From the article:

So far, our coroutine promise has implemented a so-called hot-start coroutine, which is one that begins running as soon as it is created. Another model for coroutines is the so-called cold-start coroutine, which is one that doesn’t start running until it is awaited...

PVS-Studio Learns What strlen is All About

Somehow, it so happens that we write about our diagnostics, but barely touch upon the subject of how we enhance the analyzer's internal mechanics. So, for a change, today we'll talk about a new useful upgrade for our data flow analysis.

PVS-Studio Learns What strlen is All About

by Andrey Karpov

From the article:

Can you see it? To be honest, we did not notice it immediately and our first thought was, "Oh no, we broke something!" Then we saw what was up and took a minute to appreciate the advantages of static analysis. PVS-Studio warned: V512 A call of the 'strcpy' function will lead to overflow of the buffer 'astr'. asm.cpp 21 Still don't see the error? Let's go through the code step by step.