2024-05 Mailing Available
The 2024-05 mailing of new standards papers is now available.
| WG21 Number | Title | Author | Document Date | Mailing Date | Previous Version | Subgroup |
|---|---|---|---|---|---|---|
| N4983 | WG21 agenda: 24-29 June 2024, St. Louis, MO, USA | John Spicer | 2024-05-19 | 2024-05 | All of WG21 | |
| P0260R9 | C++ Concurrent Queues | Detlef Vollmann | 2024-05-22 | 2024-05 | P0260R8 | SG1 Concurrency and Parallelism,LEWG Library Evolution |
| P0843R12 | inplace_vector | Gonzalo Brito Gadeschi | 2024-05-21 | 2024-05 | P0843R11 | LWG Library |
| P0963R2 | Structured binding declaration as a condition | Zhihao Yuan | 2024-05-14 | 2024-05 | P0963R1 | EWG Evolution,CWG Core |
| P1000R6 | C++ IS schedule | Herb Sutter | 2024-05-19 | 2024-05 | P1000R5 | All of WG21 |
| P1083R8 | Move resource_adaptor from Library TS to the C++ WP | Pablo Halpern | 2024-05-22 | 2024-05 | P1083R7 | LEWG Library Evolution,LWG Library |
| P1112R5 | Language support for class layout control | Pal Balog | 2024-05-21 | 2024-05 | P1112R4 | EWG Evolution |
| P1144R11 | std::is_trivially_relocatable | Arthur O'Dwyer | 2024-05-15 | 2024-05 | P1144R10 | EWGI SG17: EWG Incubator |
| P1255R13 | A view of 0 or 1 elements: views::nullable And a concept to constrain maybes | Steve Downey | 2024-05-22 | 2024-05 | P1255R12 | LEWG Library Evolution,LWG Library |
| P1306R2 | Expansion statements | Dan Katz | 2024-05-07 | 2024-05 | P1306R1 | EWG Evolution |
| P1494R3 | Partial program correctness | S. Davis Herring | 2024-05-21 | 2024-05 | P1494R2 | SG22 Compatibility,EWG Evolution,LEWG Library Evolution,CWG Core |
| P1928R9 | std::simd - Merge data-parallel types from the Parallelism TS 2 | Matthias Kretz | 2024-05-22 | 2024-05 | P1928R8 | LWG Library |
| P2019R6 | Thread attributes | Corentin Jabot | 2024-05-22 | 2024-05 | P2019R5 | LWG Library |
| P2034R4 | Partially Mutable Lambda Captures | Ryan McDougall | 2024-04-22 | 2024-05 | P2034R3 | SG23 Safety and Security,EWG Evolution,CWG Core |
| P2079R4 | System execution context | Lee Howes | 2024-05-22 | 2024-05 | P2079R3 | SG1 Concurrency and Parallelism,LEWG Library Evolution |
| P2413R1 | Remove unsafe conversions of unique_ptr | Lénárd Szolnoki | 2024-05-22 | 2024-05 | P2413R0 | LEWG Library Evolution |
| P2434R1 | Nondeterministic pointer provenance | S. Davis Herring | 2024-05-21 | 2024-05 | P2434R0 | SG22 Compatibility,EWG Evolution |
| P2689R3 | Atomic Refs Bound to Memory Orderings & Atomic Accessors | Christian Trott | 2024-04-29 | 2024-05 | P2689R2 | SG1 Concurrency and Parallelism,LEWG Library Evolution |
| P2719R0 | Type-aware allocation and deallocation functions | Louis Dionne | 2024-05-18 | 2024-05 | EWGI SG17: EWG Incubator,EWG Evolution | |
| P2758R3 | Emitting messages at compile time | Barry Revzin | 2024-05-19 | 2024-05 | P2758R2 | EWG Evolution,LEWG Library Evolution |
| P2761R1 | Slides: If structured binding (P0963R1 presentation) | Zhihao Yuan | 2024-05-01 | 2024-05 | P2761R0 | EWG Evolution |
| P2786R6 | Trivial Relocatability For C++26 | Mungo Gill | 2024-05-21 | 2024-05 | P2786R5 | EWG Evolution,LEWG Library Evolution |
| P2822R1 | Providing user control of associated entities of class types | Lewis Baker | 2024-05-08 | 2024-05 | P2822R0 | EWG Evolution |
| P2830R4 | Standardized Constexpr Type Ordering | Gašper Ažman | 2024-05-21 | 2024-05 | P2830R3 | EWG Evolution |
| P2835R4 | Expose std::atomic_ref's object address | Gonzalo Brito Gadeschi | 2024-05-21 | 2024-05 | P2835R3 | LEWG Library Evolution |
| P2841R3 | Concept and variable-template template-parameters | Corentin Jabot | 2024-05-22 | 2024-05 | P2841R2 | CWG Core |
| P2846R2 | reserve_hint: Eagerly reserving memory for not-quite-sized lazy ranges | Corentin Jabot | 2024-05-22 | 2024-05 | P2846R1 | LEWG Library Evolution |
| P2849R0 | async-object - aka async-RAII objects | Kirk Shoop | 2024-05-21 | 2024-05 | SG1 Concurrency and Parallelism,LEWG Library Evolution | |
| P2876R1 | Proposal to extend std::simd with more constructors and accessors | Daniel Towner | 2024-05-22 | 2024-05 | P2876R0 | LEWG Library Evolution |
| P2900R7 | Contracts for C++ | Joshua Berne | 2024-05-22 | 2024-05 | P2900R6 | EWG Evolution,LEWG Library Evolution |
| P2963R2 | Ordering of constraints involving fold expressions | Corentin Jabot | 2024-05-22 | 2024-05 | P2963R1 | CWG Core |
| P2964R1 | Allowing user-defined types in std::simd | Daniel Towner | 2024-05-22 | 2024-05 | P2964R0 | SG6 Numerics,LEWG Library Evolution |
| P2967R1 | Relocation Is A Library Interface | Alisdair Meredith | 2024-05-22 | 2024-05 | P2967R0 | LEWG Library Evolution |
| P2971R2 | Implication for C++ | Walter E Brown | 2024-05-21 | 2024-05 | P2971R1 | EWG Evolution,LEWG Library Evolution |
| P2976R1 | Freestanding Library: algorithm, numeric, and random | Ben Craig | 2024-05-05 | 2024-05 | P2976R0 | LWG Library |
| P2988R5 | std::optional<T&> | Steve Downey | 2024-05-22 | 2024-05 | P2988R4 | LEWG Library Evolution,LWG Library |
| P2996R3 | Reflection for C++26 | Barry Revzin | 2024-05-22 | 2024-05 | P2996R2 | EWG Evolution |
| P3045R1 | Quantities and units library | Mateusz Pusz | 2024-05-22 | 2024-05 | P3045R0 | SG6 Numerics,SG16 Unicode,LEWGI SG18: LEWG Incubator,LEWG Library Evolution |
| P3051R1 | Structured Response Files | René Ferdinand Rivera Morell | 2024-05-20 | 2024-05 | P3051R0 | SG15 Tooling |
| P3059R1 | Making user-defined constructors of view iterators/sentinels private | Hewill Kang | 2024-05-16 | 2024-05 | P3059R0 | SG9 Ranges,LEWG Library Evolution |
| P3064R1 | How to Avoid OOTA Without Really Trying | Paul E. McKenney | 2024-05-14 | 2024-05 | P3064R0 | SG1 Concurrency and Parallelism |
| P3067R0 | Provide predefined simd permute generator functions for common operations | Daniel Towner | 2024-05-22 | 2024-05 | LEWG Library Evolution | |
| P3068R2 | Allowing exception throwing in constant-evaluation | Hana Dusíková | 2024-05-22 | 2024-05 | P3068R1 | EWG Evolution,LEWG Library Evolution |
| P3085R2 | `noexcept` policy for SD-9 (throws nothing) | Ben Craig | 2024-05-18 | 2024-05 | P3085R1 | LEWG Library Evolution |
| P3091R2 | Better lookups for `map` and `unordered_map` | Pablo Halpern | 2024-05-21 | 2024-05 | P3091R1 | LEWG Library Evolution |
| P3094R2 | std::basic_fixed_string | Mateusz Pusz | 2024-05-22 | 2024-05 | P3094R1 | SG16 Unicode,LEWGI SG18: LEWG Incubator,LEWG Library Evolution |
| P3096R1 | Function Parameter Reflection in Reflection for C++26 | Adam Lach | 2024-05-15 | 2024-05 | P3096R0 | EWG Evolution,LEWG Library Evolution |
| P3100R0 | Undefined and erroneous behaviour are contract violations | Timur Doumler | 2024-05-21 | 2024-05 | SG21 Contracts,SG23 Safety and Security,EWG Evolution | |
| P3103R2 | More bitset operations | Jan Schultke | 2024-05-22 | 2024-05 | P3103R1 | LEWGI SG18: LEWG Incubator |
| P3111R0 | Atomic Reduction Operations | Gonzalo Brito Gadeschi | 2024-05-22 | 2024-05 | SG1 Concurrency and Parallelism,SG6 Numerics | |
| P3119R1 | Tokyo Technical Fixes to Contracts | Joshua Berne | 2024-05-09 | 2024-05 | P3119R0 | SG21 Contracts |
| P3125R0 | Pointer tagging | Hana Dusíková | 2024-05-22 | 2024-05 | SG1 Concurrency and Parallelism | |
| P3126R1 | Graph Library: Overview | Phil Ratzloff | 2024-05-20 | 2024-05 | P3126R0 | SG14 Low Latency,SG19 Machine Learning |
| P3130R1 | Graph Library: Graph Container Interface | Phil Ratzloff | 2024-05-20 | 2024-05 | P3130R0 | SG14 Low Latency,SG19 Machine Learning |
| P3131R1 | Graph Library: Containers | Phil Ratzloff | 2024-05-20 | 2024-05 | P3131R0 | SG14 Low Latency,SG19 Machine Learning |
| P3137R1 | views::to_input | Tim Song | 2024-05-21 | 2024-05 | P3137R0 | SG9 Ranges |
| P3138R1 | views::cache_last | Tim Song | 2024-05-21 | 2024-05 | P3138R0 | SG1 Concurrency and Parallelism,LEWG Library Evolution |
| P3139R0 | Pointer cast for unique_ptr | Zhihao Yuan | 2024-05-20 | 2024-05 | LEWG Library Evolution | |
| P3149R3 | async_scope -- Creating scopes for non-sequential concurrency | Ian Petersen | 2024-05-21 | 2024-05 | P3149R2 | LEWG Library Evolution |
| P3154R1 | Deprecating signed character types in iostreams | Elias Kosunen | 2024-05-20 | 2024-05 | P3154R0 | LEWG Library Evolution |
| P3157R1 | Generative Extensions for Reflection | Andrei Alexandrescu | 2024-05-22 | 2024-05 | P3157R0 | SG7 Reflection |
| P3175R1 | Reconsidering the `std::execution::on` algorithm | Eric Niebler | 2024-05-14 | 2024-05 | P3175R0 | LEWG Library Evolution |
| P3175R2 | Reconsidering the `std::execution::on` algorithm | Eric Niebler | 2024-05-21 | 2024-05 | P3175R1 | LEWG Library Evolution |
| P3179R1 | C++ parallel range algorithms | Ruslan Arutyunyan | 2024-05-22 | 2024-05 | P3179R0 | SG1 Concurrency and Parallelism,SG9 Ranges |
| P3183R1 | Contract testing support | Bengt Gustafsson | 2024-05-22 | 2024-05 | P3183R0 | SG21 Contracts |
| P3210R1 | A Postcondition *is* a Pattern Match | Andrew Tomazos | 2024-04-20 | 2024-05 | P3210R0 | SG21 Contracts,EWG Evolution |
| P3214R0 | 2024-04 Library Evolution Poll Outcomes | Inbal Levi | 2024-05-22 | 2024-05 | LEWG Library Evolution | |
| P3228R1 | Contracts for C++: Revisiting contract check elision and duplication | Timur Doumler | 2024-05-21 | 2024-05 | P3228R0 | SG21 Contracts,EWG Evolution |
| P3234R1 | Utility to check if a pointer is in a given range | Glen Joseph Fernandes | 2024-04-29 | 2024-05 | P3234R0 | EWG Evolution,LEWG Library Evolution |
| P3235R0 | std::print more types faster with less memory | Victor Zverovich | 2024-05-11 | 2024-05 | LEWG Library Evolution | |
| P3236R1 | Please reject P2786 and adopt P1144 | Alan de Freitas | 2024-05-21 | 2024-05 | P3236R0 | All of WG21 |
| P3238R0 | An alternate proposal for naming contract semantics | Ville Voutilainen | 2024-05-06 | 2024-05 | SG21 Contracts | |
| P3239R0 | A Relocating Swap | Alisdair Meredith | 2024-05-22 | 2024-05 | EWG Evolution,LEWG Library Evolution | |
| P3247R1 | Deprecate the notion of trivial types | Jens Maurer | 2024-05-19 | 2024-05 | P3247R0 | LEWG Library Evolution,CWG Core |
| P3248R0 | Require [u]intptr_t | Gonzalo Brito Gadeschi | 2024-05-20 | 2024-05 | SG1 Concurrency and Parallelism,SG22 Compatibility,EWG Evolution,LEWG Library Evolution | |
| P3249R0 | A unified syntax for Pattern Matching and Contracts when introducing a new name | Ran Regev | 2024-04-22 | 2024-05 | SG21 Contracts,EWG Evolution | |
| P3250R0 | C++ contracts with regards to function pointers | Peter Bindels | 2024-05-07 | 2024-05 | SG21 Contracts | |
| P3251R0 | C++ contracts and coroutines | Peter Bindels | 2024-05-07 | 2024-05 | SG21 Contracts | |
| P3253R0 | Distinguishing between member and free coroutines | Brian Bi | 2024-05-22 | 2024-05 | EWG Evolution,LEWG Library Evolution | |
| P3254R0 | Reserve identifiers preceded by @ for non-ignorable annotation tokens | Brian Bi | 2024-05-22 | 2024-05 | EWG Evolution | |
| P3255R0 | Expose whether atomic notifying operations are lock-free | Brian Bi | 2024-05-22 | 2024-05 | SG1 Concurrency and Parallelism | |
| P3257R0 | Make the predicate of contract_assert more regular | Jens Maurer | 2024-04-26 | 2024-05 | SG21 Contracts,EWG Evolution | |
| P3258R0 | Formatting charN_t | Corentin Jabot | 2024-05-22 | 2024-05 | SG16 Unicode,LEWG Library Evolution | |
| P3259R0 | const by default | Jarrad J Waterloo | 2024-05-09 | 2024-05 | EWG Evolution | |
| P3263R0 | Encoded annotated char | Tiago Freire | 2024-05-03 | 2024-05 | SG16 Unicode,LEWGI SG18: LEWG Incubator | |
| P3264R0 | Double-evaluation of preconditions | Ville Voutilainen | 2024-05-17 | 2024-05 | EWG Evolution | |
| P3264R1 | Double-evaluation of preconditions | Ville Voutilainen | 2024-05-17 | 2024-05 | P3264R0 | EWG Evolution |
| P3265R0 | Ship Contracts in a TS | Ville Voutilainen | 2024-05-07 | 2024-05 | EWG Evolution | |
| P3265R1 | Ship Contracts in a TS | Ville Voutilainen | 2024-05-22 | 2024-05 | P3265R0 | EWG Evolution |
| P3266R0 | non referenceable types | Jarrad J Waterloo | 2024-05-05 | 2024-05 | EWG Evolution | |
| P3267R0 | C++ contracts implementation strategies | Peter Bindels | 2024-05-16 | 2024-05 | SG15 Tooling,SG21 Contracts | |
| P3267R1 | Approaches to C++ Contracts | Peter Bindels | 2024-05-22 | 2024-05 | P3267R0 | SG15 Tooling,SG21 Contracts |
| P3268R0 | C++ Contracts Constification Challenges Concerning Current Code | Peter Bindels | 2024-05-07 | 2024-05 | SG21 Contracts,EWG Evolution | |
| P3269R0 | Do Not Ship Contracts as a TS | Timur Doumler | 2024-05-21 | 2024-05 | SG21 Contracts,EWG Evolution | |
| P3270R0 | Repetition, Elision, and Constification w.r.t. contract_assert | John Lakos | 2024-05-22 | 2024-05 | SG21 Contracts | |
| P3271R0 | Function Usage Types (Contracts for Function Pointers) | Lisa Lippincott | 2024-05-20 | 2024-05 | SG21 Contracts | |
| P3273R0 | Introspection of Closure Types | Andrei Alexandrescu | 2024-05-22 | 2024-05 | SG7 Reflection | |
| P3274R0 | A framework for Profiles development | Bjarne Stroustrup | 2024-05-09 | 2024-05 | SG23 Safety and Security,EWG Evolution,LEWG Library Evolution | |
| P3275R0 | Replace simd operator[] with getter and setter functions - or not | Matthias Kretz | 2024-05-22 | 2024-05 | LEWG Library Evolution | |
| P3276R0 | P2900 Is Superior to a Contracts TS | Joshua Berne | 2024-05-17 | 2024-05 | SG21 Contracts,EWG Evolution | |
| P3278R0 | Analysis of interaction between relocation, assignment, and swap | Nina Ranns | 2024-05-22 | 2024-05 | EWG Evolution,LEWG Library Evolution | |
| P3279R0 | CWG2463: What 'trivially fooable' should mean | Arthur O'Dwyer | 2024-05-15 | 2024-05 | EWGI SG17: EWG Incubator | |
| P3281R0 | Contact checks should be regular C++ | John Spicer | 2024-05-15 | 2024-05 | SG21 Contracts,EWG Evolution | |
| P3282R0 | Static Storage for C++ Concurrent bounded_queue | Detlef Vollmann | 2024-05-19 | 2024-05 | SG1 Concurrency and Parallelism,SG14 Low Latency,LEWG Library Evolution | |
| P3283R0 | Adding .first() and .last() to strings | Rhidian De Wit | 2024-05-16 | 2024-05 | LEWGI SG18: LEWG Incubator | |
| P3284R0 | `finally`, `write_env`, and `unstoppable` Sender Adaptors | Eric Niebler | 2024-05-15 | 2024-05 | LEWG Library Evolution | |
| P3285R0 | Contracts: Protecting The Protector | Gabriel Dos Reis | 2024-05-15 | 2024-05 | SG23 Safety and Security,EWG Evolution | |
| P3286R0 | Module Metadata Format for Distribution with Pre-Built Libraries | Daniel Ruoso | 2024-05-22 | 2024-05 | SG15 Tooling | |
| P3287R0 | Exploration of namespaces for std::simd | Matthias Kretz | 2024-05-22 | 2024-05 | LEWG Library Evolution | |
| P3288R0 | std::elide | Thomas P. K. Healy | 2024-05-22 | 2024-05 | EWGI SG17: EWG Incubator,LEWGI SG18: LEWG Incubator | |
| P3289R0 | Consteval blocks | Daveed Vandevoorde | 2024-05-21 | 2024-05 | EWG Evolution | |
| P3290R0 | Integrating Existing Assertions With Contracts | Joshua Berne | 2024-05-22 | 2024-05 | SG21 Contracts | |
| P3292R0 | Provenance and Concurrency | David Goldblatt | 2024-05-17 | 2024-05 | SG1 Concurrency and Parallelism | |
| P3293R0 | Splicing a base class subobject | Barry Revzin | 2024-05-19 | 2024-05 | EWG Evolution | |
| P3294R0 | Code Injection with Token Sequences | Barry Revzin | 2024-05-22 | 2024-05 | SG7 Reflection,EWG Evolution | |
| P3295R0 | Freestanding constexpr containers and constexpr exception types | Ben Craig | 2024-05-21 | 2024-05 | SG7 Reflection,LEWG Library Evolution | |
| P3296R0 | let_with_async_scope | Anthony Williams | 2024-05-22 | 2024-05 | SG1 Concurrency and Parallelism,LEWG Library Evolution | |
| P3297R0 | C++26 Needs Contract Checking | Ryan McDougall | 2024-05-20 | 2024-05 | SG21 Contracts,SG23 Safety and Security,EWG Evolution | |
| P3298R0 | Implicit user-defined conversion functions as operator.() | Bengt Gustafsson | 2024-05-22 | 2024-05 | EWGI SG17: EWG Incubator | |
| P3299R0 | Range constructors for std::simd | Daniel Towner | 2024-05-22 | 2024-05 | LEWG Library Evolution | |
| P3301R0 | inplace_stoppable_base | Lauri Vasama | 2024-05-21 | 2024-05 | LEWG Library Evolution | |
| P3302R0 | SG16: Unicode meeting summaries 2024-03-13 through 2024-05-08 | Tom Honermann | 2024-05-21 | 2024-05 | SG16 Unicode | |
| P3303R0 | Fixing Lazy Sender Algorithm Customization | Eric Niebler | 2024-05-21 | 2024-05 | LEWG Library Evolution | |
| P3304R0 | SG14: Low Latency/Games/Embedded/Financial Trading virtual Meeting Minutes 2024/04/10 | Michael Wong | 2024-05-21 | 2024-05 | SG14 Low Latency | |
| P3305R0 | SG19: Machine Learning virtual Meeting Minutes to 2024/04/11-2024/05/09 | Michael Wong | 2024-05-21 | 2024-05 | SG19 Machine Learning | |
| P3306R0 | Atomic Read-Modify-Write Improvements | Gonzalo Brito Gadeschi | 2024-05-22 | 2024-05 | SG1 Concurrency and Parallelism,SG6 Numerics | |
| P3307R0 | Floating-Point Maximum/Minimum Function Objects | Gonzalo Brito Gadeschi | 2024-05-21 | 2024-05 | SG6 Numerics | |
| P3308R0 | mdarray design questions and answers | Mark Hoemmen | 2024-05-21 | 2024-05 | LEWG Library Evolution | |
| P3309R0 | constexpr atomic and atomic_ref | Hana Dusíková | 2024-05-22 | 2024-05 | SG1 Concurrency and Parallelism,LEWG Library Evolution | |
| P3310R0 | Solving partial ordering issues introduced by P0522R0 | Matheus Izvekov | 2024-05-22 | 2024-05 | EWG Evolution,CWG Core | |
| P3311R0 | An opt-in approach for integration of traditional assert facilities in C++ contracts | Tom Honermann | 2024-05-22 | 2024-05 | SG21 Contracts | |
| P3312R0 | Overload Set Types | Bengt Gustafsson | 2024-05-22 | 2024-05 | EWGI SG17: EWG Incubator | |
| P3313R0 | Impacts of noexept on ARM table based exception metadata | Khalil Estell | 2024-05-22 | 2024-05 | EWG Evolution,LEWG Library Evolution | |
| P3316R0 | A more predictable unchecked semantic | Jonas Persson | 2024-05-22 | 2024-05 | SG21 Contracts | |
| P3317R0 | Compile time resolved contracts | Jonas Persson | 2024-05-22 | 2024-05 | SG21 Contracts | |
| P3318R0 | Throwing violation handlers, from an application programming perspective | Ville Voutilainen | 2024-05-22 | 2024-05 | LEWG Library Evolution | |
| P3319R0 | Add an iota object for simd (and more) | Matthias Kretz | 2024-05-22 | 2024-05 | LEWG Library Evolution | |
| P3320R0 | EWG slides for P3144 "Delete if Incomplete" | Alisdair Meredith | 2024-05-22 | 2024-05 | EWG Evolution | |
| P4000R0 | To TS or not to TS: that is the question | Michael Wong | 2024-05-22 | 2024-05 | All of WG21 |

Registration is now open for CppCon 2024! The conference starts on September 15 and will be held
You have probably written a class that prints a message in all its special member functions. And like me, you probably wrote it multiple times. I decided to write it well once and for all, and share it.
If you're writing C++, there's a good reason (maybe...) as to why you are. And probably, that reason is performance. So often when reading about the language you'll find all sorts of "performance tips and tricks" or "do this instead because it's more efficient". Sometimes you get a good explanation as to why you should. But more often than not, you won't find any hard numbers to back up that claim. I recently found a peculiar one, the
Registration is now open for CppCon 2024! The conference starts on September 15 and will be held
In our previous discussion, we explored the intricacies of stateful but coalescing update notifications, shedding light on the pivotal role of the UI thread in implicit serialization. However, what if this luxury of implicit synchronization is absent? Delving into an alternate version of our solution, we confront the looming specter of race conditions and the necessity for meticulous thread management to ensure seamless operation. Join us as we navigate the complexities of thread synchronization and embark on a quest to refine our approach to asynchronous work handling.
Registration is now open for CppCon 2024! The conference starts on September 15 and will be held
Another meeting, another slew of potential changes to standard C++. In this recap, I’ll summarize the working draft’s most significant changes, spotlight my favorite proposal at the meeting, Member customization points for Senders and Receivers, and discuss a handful of notable developments.