Standardization

Smart Pointers and the Pointer to Implementation Idiom -- Andreas Fertig

me.pngA post I wrote back in 2023 When an empty destructor is required resulted in feedback that I'd like to address in today's post.

Smart Pointers and the Pointer to Implementation Idiom

by Andreas Fertig

From the article:

In the 2023 post, I briefly mentioned PImpl idiom. I did not intend to make it the theme of the post. However, I got various questions about PImpl and smart pointers.

The goal of PImpl is to hide implementation details from clients. Since you can declare a pointer of an unknown class, you can shift the entire implementation of such an anonymous class into a .cpp file. That way, no client can see any details. Another benefit is that changes to that .cpp file result in only minor recompiles. Maintaining the same in a header file would cause all .cpp files, including this header, to recompile. At least the speed-up part is since C++20's modules are no longer necessary. And as long as you don't want to hide classified implementation in the .cpp file modules, it also gives you the ability to mark constructs as private.

 

2024-10 Mailing Available

The 2024-10 mailing of new standards papers is now available.

 

WG21 Number Title Author Document Date Mailing Date Previous Version Subgroup
N4991 2025 Sofia Meeting Invitation and Information Vassil Vassilev 2024-10-16 2024-10   All of WG21
N4993 Working Draft, Programming Languages -- C++ Thomas Köppe 2024-10-16 2024-10   All of WG21
N4994 Editors' Report, Programming Languages -- C++ Thomas Köppe 2024-10-16 2024-10   All of WG21
P0260R11 C++ Concurrent Queues Detlef Vollmann 2024-10-12 2024-10 P0260R10 SG1 Concurrency and Parallelism,LEWG Library Evolution
P0707R5 Metaclass functions for generative C++ Herb Sutter 2024-10-15 2024-10 P0707R4 SG7 Reflection,EWG Evolution
P0876R18 fiber_context - fibers without scheduler Oliver Kowalke 2024-10-16 2024-10 P0876R17 EWG Evolution,CWG Core,LWG Library
P1144R12 std::is_trivially_relocatable Arthur O'Dwyer 2024-10-14 2024-10 P1144R11 EWGI SG17: EWG Incubator
P1255R14 A view of 0 or 1 elements: views::nullable And a concept to constrain maybes Steve Downey 2024-10-16 2024-10 P1255R13 LEWG Library Evolution,LWG Library
P1306R3 Expansion statements Dan Katz 2024-10-14 2024-10 P1306R2 EWG Evolution
P1494R4 Partial program correctness S. Davis Herring 2024-10-15 2024-10 P1494R3 SG22 Compatibility,EWG Evolution,LEWG Library Evolution,CWG Core
P1708R9 Basic Statistics Richard Dosselmann 2024-10-14 2024-10 P1708R8 SG6 Numerics,SG14 Low Latency,SG19 Machine Learning,LEWG Library Evolution,LWG Library
P1729R5 Text Parsing Elias Kosunen 2024-10-15 2024-10 P1729R4 SG16 Unicode,LEWG Library Evolution
P1839R6 Accessing object representations Brian Bi 2024-10-14 2024-10 P1839R5 CWG Core
P1928R12 std::simd - Merge data-parallel types from the Parallelism TS 2 Matthias Kretz 2024-10-11 2024-10 P1928R11 LWG Library
P2079R5 System execution context Lucian Radu Teodorescu 2024-10-16 2024-10 P2079R4 SG1 Concurrency and Parallelism,LEWG Library Evolution
P2319R2 Prevent path presentation problems Victor Zverovich 2024-09-28 2024-10 P2319R1 LEWG Library Evolution
P2392R3 Pattern matching using is and as Herb Sutter 2024-10-16 2024-10 P2392R2 EWG Evolution
P2434R2 Nondeterministic pointer provenance S. Davis Herring 2024-10-15 2024-10 P2434R1 SG22 Compatibility,EWG Evolution,CWG Core
P2645R0 path_view: a design that took a wrong turn Victor Zverovich 2024-10-12 2024-10   LEWG Library Evolution
P2664R8 Proposal to extend std::simd with permutation API Daniel Towner 2024-10-15 2024-10 P2664R7 SG1 Concurrency and Parallelism,LEWG Library Evolution
P2688R3 Pattern Matching: `match` Expression Michael Park 2024-10-16 2024-10 P2688R2 EWG Evolution
P2719R1 Type-aware allocation and deallocation functions Louis Dionne 2024-10-16 2024-10 P2719R0 EWG Evolution
P2728R7 Unicode in the Library, Part 1: UTF Transcoding Zach Laine 2024-10-07 2024-10 P2728R6 SG9 Ranges,SG16 Unicode,LEWG Library Evolution
P2746R6 Deprecate and Replace Fenv Rounding Modes Hans Boehm 2024-10-14 2024-10 P2746R5 SG6 Numerics,LEWG Library Evolution
P2769R3 get_element customization point object Ruslan Arutyunyan 2024-10-16 2024-10 P2769R2 LEWG Library Evolution
P2786R8 Trivial Relocatability For C++26 Mungo Gill 2024-10-16 2024-10 P2786R7 EWG Evolution,LEWG Library Evolution
P2841R5 Concept and variable-template template-parameters Corentin Jabot 2024-10-16 2024-10 P2841R4 CWG Core
P2846R4 reserve_hint: Eagerly reserving memory for not-quite-sized lazy ranges Corentin Jabot 2024-10-15 2024-10 P2846R3 LEWG Library Evolution
P2900R10 Contracts for C++ Joshua Berne 2024-10-13 2024-10 P2900R9 EWG Evolution,LEWG Library Evolution
P2900R9 Contracts for C++ Joshua Berne 2024-10-13 2024-10 P2900R8 EWG Evolution,LEWG Library Evolution
P2933R2 std::simd overloads for <bit> header Daniel Towner 2024-10-16 2024-10 P2933R1 LWG Library
P2957R2 Contracts and coroutines Andrzej Krzemieński 2024-10-14 2024-10 P2957R1 SG21 Contracts,EWG Evolution
P2977R2 Build database files Ben Boeckel 2024-10-15 2024-10 P2977R1 SG15 Tooling
P2988R8 std::optional<T&> Steve Downey 2024-10-15 2024-10 P2988R7 LEWG Library Evolution,LWG Library
P2996R6 Reflection for C++26 Barry Revzin 2024-10-09 2024-10 P2996R5 EWG Evolution
P2996R7 Reflection for C++26 Barry Revzin 2024-10-12 2024-10 P2996R6 EWG Evolution
P2998R0 CTAD for function parameter types James Touton 2024-10-15 2024-10   EWGI SG17: EWG Incubator,EWG Evolution
P3019R10 Vocabulary Types for Composite Class Design Jonathan Coe 2024-09-30 2024-10 P3019R9 LEWG Library Evolution,LWG Library
P3045R2 Quantities and units library Mateusz Pusz 2024-10-09 2024-10 P3045R1 SG6 Numerics,SG16 Unicode,LEWG Library Evolution
P3045R3 Quantities and units library Mateusz Pusz 2024-10-15 2024-10 P3045R2 SG6 Numerics,SG16 Unicode,LEWG Library Evolution
P3049R1 node-handles for lists Michael Florian Hava 2024-10-15 2024-10 P3049R0 LEWG Library Evolution
P3070R1 Formatting enums Victor Zverovich 2024-10-13 2024-10 P3070R0 LEWG Library Evolution
P3081R0 Core safety Profiles: Specification, adoptability, and impact Herb Sutter 2024-10-15 2024-10   SG15 Tooling,SG23 Safety and Security,EWG Evolution
P3091R3 Better lookups for `map` and `unordered_map` Pablo Halpern 2024-10-14 2024-10 P3091R2 LEWG Library Evolution
P3094R4 std::basic_fixed_string Mateusz Pusz 2024-10-09 2024-10 P3094R3 SG16 Unicode,LEWG Library Evolution
P3094R5 std::basic_fixed_string Mateusz Pusz 2024-10-15 2024-10 P3094R4 LEWG Library Evolution
P3098R0 Contracts for C++: Postcondition captures Timur Doumler 2024-10-14 2024-10   SG21 Contracts,EWG Evolution
P3100R1 Undefined and erroneous behaviour are contract violations Timur Doumler 2024-10-16 2024-10 P3100R0 SG21 Contracts,SG23 Safety and Security,EWG Evolution
P3100R1 Undefined and erroneous behaviour are contract violations Timur Doumler 2024-10-16 2024-10 P3100R0 SG21 Contracts,SG23 Safety and Security,EWG Evolution
P3125R1 constexpr pointer tagging Hana Dusíková 2024-10-16 2024-10 P3125R0 SG1 Concurrency and Parallelism,LEWG Library Evolution
P3138R3 views::cache_latest Tim Song 2024-10-15 2024-10 P3138R2 LEWG Library Evolution
P3149R6 async_scope -- Creating scopes for non-sequential concurrency Ian Petersen 2024-10-15 2024-10 P3149R5 SG1 Concurrency and Parallelism,LEWG Library Evolution
P3152R0 Add missing constructors and assignment for indirect and polymorphic Jonathan Coe 2024-09-30 2024-10   LEWG Library Evolution
P3160R2 An allocator-aware `inplace_vector` Pablo Halpern 2024-10-14 2024-10 P3160R1 LEWG Library Evolution
P3179R3 C++ parallel range algorithms Ruslan Arutyunyan 2024-10-16 2024-10 P3179R2 SG1 Concurrency and Parallelism,SG9 Ranges,LEWG Library Evolution
P3227R0 Contracts for C++: Fixing the contract violation handling API Gašper Ažman 2024-10-16 2024-10   SG21 Contracts,LEWG Library Evolution
P3237R1 Matrix Representation of Contract Semantics Andrei Zissu 2024-10-16 2024-10 P3237R0 SG21 Contracts
P3261R0 Revisiting `const`-ification in Contract Assertions Joshua Berne 2024-10-02 2024-10   SG21 Contracts,EWG Evolution
P3261R1 Revisiting `const`-ification in Contract Assertions Joshua Berne 2024-10-13 2024-10 P3261R0 SG21 Contracts,EWG Evolution
P3271R1 Function Types with Usage (Contracts for Function Pointers) Lisa Lippincott 2024-10-14 2024-10 P3271R0 SG21 Contracts
P3287R1 Exploration of namespaces for std::simd Matthias Kretz 2024-10-15 2024-10 P3287R0 LEWG Library Evolution
P3293R1 Splicing a base class subobject Barry Revzin 2024-10-13 2024-10 P3293R0 EWG Evolution
P3294R2 Code Injection with Token Sequences Barry Revzin 2024-10-15 2024-10 P3294R1 SG7 Reflection,EWG Evolution
P3295R2 Freestanding constexpr containers and constexpr exception types Ben Craig 2024-10-12 2024-10 P3295R1 LEWG Library Evolution
P3296R2 let_async_scope Anthony Williams 2024-10-14 2024-10 P3296R1 SG1 Concurrency and Parallelism,LEWG Library Evolution
P3298R1 Implicit user-defined conversion functions as operator.() Bengt Gustafsson 2024-10-15 2024-10 P3298R0 EWG Evolution
P3299R2 Range constructors for std::simd Daniel Towner 2024-10-16 2024-10 P3299R1 LEWG Library Evolution
P3310R3 Solving partial ordering issues introduced by P0522R0 Matheus Izvekov 2024-10-14 2024-10 P3310R2 EWG Evolution,CWG Core
P3310R4 Solving issues introduced by P0522R0 Matheus Izvekov 2024-10-15 2024-10 P3310R3 EWG Evolution,CWG Core
P3324R0 Attributes for namespace aliases, template parameters, and lambda captures Tom Honermann 2024-10-14 2024-10   EWG Evolution
P3327R0 Contract assertions on function pointers Timur Doumler 2024-10-16 2024-10   SG21 Contracts,EWG Evolution
P3334R0 Cross Static Variables Coral Kashri 2024-10-15 2024-10   SG7 Reflection,EWGI SG17: EWG Incubator
P3335R2 Structured Core Options René Ferdinand Rivera Morell 2024-10-15 2024-10 P3335R1 SG15 Tooling
P3346R0 thread_local means fiber-specific Nat Goodspeed 2024-10-16 2024-10   EWG Evolution,LEWG Library Evolution
P3348R1 C++26 should refer to C23 not C17 Jonathan Wakely 2024-10-14 2024-10 P3348R0 SG6 Numerics,LEWG Library Evolution
P3349R0 Converting contiguous iterators to pointers Jonathan Wakely 2024-10-16 2024-10   LEWG Library Evolution
P3351R1 views::scan Yihe Li 2024-10-09 2024-10 P3351R0 SG9 Ranges
P3352R0 Taming the Demons (C++ version) - Undefined Behavior and Partial Program Correctness Andrew Tomazos, Martin Uecker 2024-09-19 2024-10   SG22 Compatibility,EWG Evolution
P3355R1 Fix submdspan for C++26 Mark Hoemmen 2024-10-15 2024-10 P3355R0 LWG Library
P3367R0 constexpr coroutines Hana Dusíková 2024-10-16 2024-10   EWG Evolution,LEWG Library Evolution
P3370R1 Add new library headers from C23 Jens Maurer 2024-10-06 2024-10 P3370R0 LEWG Library Evolution
P3371R2 Fix C++26 by making the rank-1, rank-2, rank-k, and rank-2k updates consistent with the BLAS Mark Hoemmen 2024-10-14 2024-10 P3371R1 LEWG Library Evolution
P3372R2 constexpr containers and adapters Hana Dusíková 2024-10-08 2024-10 P3372R1 LEWG Library Evolution
P3375R1 Reproducible floating-point results Guy Davidson 2024-10-08 2024-10 P3375R0 SG6 Numerics,SG14 Low Latency,LEWG Library Evolution
P3376R0 Contract assertions versus static analysis and 'safety' Andrzej Krzemieński 2024-10-14 2024-10   SG21 Contracts,EWG Evolution
P3378R0 constexpr exception types Hana Dusíková 2024-10-14 2024-10   LEWG Library Evolution
P3385R1 Attributes reflection Aurelien Cassagnes 2024-10-14 2024-10 P3385R0 SG7 Reflection
P3386R0 Static Analysis of Contracts with P2900 Joshua Berne 2024-10-15 2024-10   EWG Evolution
P3387R0 Contract assertions on coroutines Timur Doumler 2024-10-09 2024-10   SG21 Contracts,EWG Evolution
P3394R0 Annotations for Reflection Daveed Vandevoorde 2024-10-14 2024-10   SG7 Reflection,EWG Evolution
P3399R0 Adjusting Electronic Polls to a Hybrid Workflow Inbal Levi 2024-10-16 2024-10   LEWG Library Evolution,All of WG21
P3402R1 A Safety Profile Verifying Class Initialization Marc-André Laverdière 2024-10-14 2024-10 P3402R0 SG23 Safety and Security
P3403R0 The Undefined Behavior Question Andrew Tomazos 2024-09-19 2024-10   EWG Evolution
P3404R0 std::at : Range-checked accesses to arbitrary containers Andre Kostur 2024-10-11 2024-10   SG9 Ranges,SG23 Safety and Security
P3405R0 Out-of-order designated initializers Elias Kosunen 2024-09-28 2024-10   EWG Evolution
P3406R0 We need better performance testing Bjarne Stroustrup 2024-09-24 2024-10   All of WG21
P3407R0 Make idiomatic usage of `offsetof` well-defined Brian Bi 2024-10-14 2024-10   EWG Evolution
P3409R0 Enabling more efficient stop-token based cancellation of senders Lewis Baker 2024-10-16 2024-10   SG1 Concurrency and Parallelism
P3411R0 `any_view` Hui Xie 2024-09-29 2024-10   SG9 Ranges,LEWG Library Evolution
P3412R0 String interpolation Bengt Gustafsson 2024-10-15 2024-10   EWGI SG17: EWG Incubator,EWG Evolution
P3413R0 A more flexible optional::value_or (else!) Corentin Jabot 2024-10-15 2024-10   LEWG Library Evolution
P3415R0 Range interface in std::optional breaks code! Andrzej Krzemieński 2024-10-10 2024-10   LEWG Library Evolution
P3416R0 exception_ptr_cast: Add && = delete overload Gor Nishanov 2024-10-14 2024-10   LEWG Library Evolution
P3417R0 Improving the handling of exceptions thrown from contract predicates Gašper Ažman 2024-10-16 2024-10   SG21 Contracts,EWG Evolution
P3419R0 Reflection Syntax Options Summary Michael Levine 2024-10-11 2024-10   SG7 Reflection,EWGI SG17: EWG Incubator,EWG Evolution
P3420R0 Reflection of Templates Andrei Alexandrescu 2024-10-16 2024-10   SG7 Reflection
P3421R0 Consteval destructors Ben Craig 2024-10-12 2024-10   SG7 Reflection,EWG Evolution
P3422R0 Allow main function in named modules   2024-10-09 2024-10   EWG Evolution
P3423R0 Extending User-Generated Diagnostic Messages Yihe Li 2024-10-15 2024-10   EWG Evolution
P3425R0 Reducing operation-state sizes for subobject child operations Lewis Baker 2024-10-16 2024-10   LEWG Library Evolution
P3427R0 Hazard Pointer Synchronous Reclamation Maged Michael 2024-10-11 2024-10   SG1 Concurrency and Parallelism
P3428R0 Hazard Pointer Batches Maged Michael 2024-10-11 2024-10   SG1 Concurrency and Parallelism
P3429R0 Reflection header should minimize standard library dependencies Jonathan Müller 2024-10-16 2024-10   LEWG Library Evolution
P3430R0 simd issues: explicit, unsequenced, identity-element position, and members of disabled simd Matthias Kretz 2024-10-15 2024-10   LEWG Library Evolution
P3433R0 Allocator Support for Operation States Dietmar Kuehl 2024-10-14 2024-10   LEWG Library Evolution
P3435R0 Reflection and meta-programming Jean-Baptiste VALLON HOARAU 2024-10-14 2024-10   SG7 Reflection
P3436R0 Strategy for removing safety-related undefined behavior by default Herb Sutter 2024-10-16 2024-10   SG23 Safety and Security,EWG Evolution
P3437R0 Proposed default principles: Reflect C++, Generate C++ Herb Sutter 2024-10-16 2024-10   SG7 Reflection,EWG Evolution
P3438R0 Make integral overloads of std::to_string constexpr Andreas Fertig 2024-10-13 2024-10   LEWG Library Evolution
P3439R0 Chained comparisons: Safe, correct, efficient Herb Sutter 2024-10-15 2024-10   EWG Evolution
P3440R0 Add n_elements named constructor to std::simd Daniel Towner 2024-10-15 2024-10   LEWG Library Evolution
P3441R0 Rename simd_split to simd_chunk Daniel Towner 2024-10-15 2024-10   LEWG Library Evolution
P3442R0 [[invalidate_dereferencing]] attribute Patrice Roy 2024-10-14 2024-10   SG14 Low Latency,LEWG Library Evolution
P3443R0 Reflection on SG21 2024 Process Ran Regev 2024-10-14 2024-10   SG21 Contracts,EWG Evolution
P3444R0 Memory safety without lifetime parameters Sean Baxter 2024-10-14 2024-10   SG23 Safety and Security
P3445R0 Add utilities for easier type/bit casting in std::simd Daniel Towner 2024-10-16 2024-10   LEWG Library Evolution
P3446R0 Profile invalidation - eliminating dangling pointers Bjarne Stroustrup 2024-10-14 2024-10   SG23 Safety and Security
P3447R0 Profiles syntax Bjarne Stroustrup 2024-10-14 2024-10   SG23 Safety and Security
P3449R0 constexpr std::generator Hana Dusíková 2024-10-14 2024-10   LEWG Library Evolution
P3450R0 Extending is_within_lifetime Barry Revzin 2024-10-14 2024-10   LEWG Library Evolution
P3451R0 A Suggestion for Reflection Access Control Barry Revzin 2024-10-14 2024-10   EWG Evolution
P3454R0 Revising Atomic Max/Min Operations Michael Wong 2024-10-15 2024-10   SG1 Concurrency and Parallelism
P3455R0 SG14: Low Latency/Games/Embedded/Financial Trading virtual Meeting Minutes 2024/6/12-2024/10/9 Michael Wong 2024-10-14 2024-10   SG14 Low Latency
P3456R0 system_scheduler on Win32, Darwin and Linux Gor Nishanov 2024-10-15 2024-10   SG1 Concurrency and Parallelism,LEWG Library Evolution,LWG Library
P3457R0 SG19: Machine Learning virtual Meeting Minutes to 2024/06/13-2024/10/10 Michael Wong 2024-10-14 2024-10   SG19 Machine Learning
P3460R0 Contracts Implementors Report Eric Fiselier, Nina Dinka Ranns, Iain Sandoe 2024-10-16 2024-10   SG21 Contracts,EWG Evolution,CWG Core
P3465R0 Pursue P1179 as a Lifetime TS Herb Sutter 2024-10-15 2024-10   SG23 Safety and Security,EWG Evolution
P3466R0 (Re)affirm design principles for future C++ evolution Herb Sutter 2024-10-16 2024-10   EWG Evolution
P3467R0 2024-10 Library Evolution Polls Inbal Levi 2024-10-16 2024-10   LEWG Library Evolution
P3469R0 Virtual deducing this Mike Spertus 2024-10-16 2024-10   EWG Evolution
P3470R0 Interface-Unit-Only Module Library Support Daniel Ruoso 2024-10-15 2024-10   SG15 Tooling,EWG Evolution
P3471R0 Standard library hardening Konstantin Varlamov 2024-10-15 2024-10   SG23 Safety and Security,LEWG Library Evolution
P3472R0 Make fiber_context::can_resume() const Andrzej Krzemieński 2024-10-15 2024-10   LEWG Library Evolution
P3473R0 Splicing Should Respect Access Control Steve Downey 2024-10-16 2024-10   EWG Evolution
P3474R0 std::arguments Jeremy Rifkin 2024-10-15 2024-10   EWGI SG17: EWG Incubator,LEWGI SG18: LEWG Incubator
P3475R0 Defang and deprecate memory_order::consume Hans Boehm 2024-10-15 2024-10   SG1 Concurrency and Parallelism,EWG Evolution,LEWG Library Evolution,CWG Core,LWG Library
P3476R0 Slides for P2688R2 - Pattern Matching: `match` Expression Michael Park 2024-10-16 2024-10   EWG Evolution
P3477R0 There are exactly 8 bits in a byte JF Bastien 2024-10-16 2024-10   SG22 Compatibility,EWG Evolution,LEWG Library Evolution
P3478R0 Constification should not be part of the MVP John Spicer 2024-10-16 2024-10   SG21 Contracts,EWG Evolution
P3479R0 Enabling C pragma support in C++ Joshua Cranmer 2024-10-16 2024-10   SG6 Numerics,EWGI SG17: EWG Incubator,SG22 Compatibility
P3480R0 std::simd is a range Matthias Kretz 2024-10-16 2024-10   SG9 Ranges,LEWG Library Evolution
P3481R0 Summarizing std::execution::bulk() issues Lucian Radu Teodorescu 2024-10-16 2024-10   SG1 Concurrency and Parallelism,LEWG Library Evolution

2024-09 Mailing Available

The 2024-09 mailing of new standards papers is now available.

 

WG21 Number Title Author Document Date Mailing Date Previous Version Subgroup
N4990 Business Plan and Convener's Report Herb Sutter 2024-08-26 2024-09   All of WG21
P0472R2 Put std::monostate in <utility> David Sankel 2024-09-09 2024-09 P0472R1 LEWG Library Evolution
P1030R7 std::filesystem::path_view Niall Douglas 2024-09-06 2024-09 P1030R6 LEWG Library Evolution
P1061R9 Structured Bindings can introduce a Pack Barry Revzin 2024-08-24 2024-09 P1061R8 CWG Core
P2019R7 Thread attributes Corentin Jabot 2024-09-16 2024-09 P2019R6 LWG Library
P2287R3 Designated-initializers for base classes Barry Revzin 2024-09-09 2024-09 P2287R2 EWG Evolution
P2319R1 Prevent path presentation problems Victor Zverovich 2024-09-14 2024-09 P2319R0 LEWG Library Evolution
P2688R2 Pattern Matching: `match` Expression Michael Park 2024-09-17 2024-09 P2688R1 EWG Evolution
P2786R7 Trivial Relocatability For C++26 Mungo Gill 2024-09-17 2024-09 P2786R6 EWG Evolution,LEWG Library Evolution
P2835R5 Expose std::atomic_ref's object address Gonzalo Brito Gadeschi 2024-09-02 2024-09 P2835R4 LEWG Library Evolution
P2835R6 Expose std::atomic_ref's object address Gonzalo Brito Gadeschi 2024-09-03 2024-09 P2835R5 LEWG Library Evolution,LWG Library
P2841R4 Concept and variable-template template-parameters Corentin Jabot 2024-09-14 2024-09 P2841R3 CWG Core
P2846R3 reserve_hint: Eagerly reserving memory for not-quite-sized lazy ranges Corentin Jabot 2024-09-14 2024-09 P2846R2 LEWG Library Evolution
P2879R0 Proposal of std::dump Andrew Tomazos 2024-09-17 2024-09   LEWGI SG18: LEWG Incubator,SG20 Education
P2945R1 Additional format specifiers for time_point Barry Revzin 2024-09-09 2024-09 P2945R0 LEWG Library Evolution
P2988R7 std::optional<T&> Steve Downey 2024-09-10 2024-09 P2988R6 LEWG Library Evolution,LWG Library
P3016R4 Resolve inconsistencies in begin/end for valarray and braced initializer lists Arthur O'Dwyer 2024-09-14 2024-09 P3016R3 LWG Library
P3019R9 Vocabulary Types for Composite Class Design Jonathan Coe 2024-09-15 2024-09 P3019R8 LEWG Library Evolution,LWG Library
P3037R3 constexpr std::shared_ptr Paul Keir 2024-09-03 2024-09 P3037R2 LEWG Library Evolution
P3074R4 trivial unions (was std::uninitialized<T>) Barry Revzin 2024-09-09 2024-09 P3074R3 EWG Evolution
P3096R3 Function Parameter Reflection in Reflection for C++26 Adam Lach 2024-09-15 2024-09 P3096R2 EWG Evolution,LEWG Library Evolution
P3128R1 Graph Library: Algorithms   2024-09-12 2024-09 P3128R0 SG14 Low Latency,SG19 Machine Learning
P3128R2 Graph Library: Algorithms   2024-09-12 2024-09 P3128R1 SG14 Low Latency,SG19 Machine Learning
P3210R2 A Postcondition *is* a Pattern Match Andrew Tomazos 2024-09-09 2024-09 P3210R1 SG21 Contracts,EWG Evolution
P3245R2 Allow `[[nodiscard]]` in type alias declarations Xavier Bonaventura 2024-09-15 2024-09 P3245R1 EWGI SG17: EWG Incubator
P3248R2 Require [u]intptr_t Gonzalo Brito Gadeschi 2024-09-06 2024-09 P3248R1 EWG Evolution,LEWG Library Evolution
P3290R2 Integrating Existing Assertions With Contracts Joshua Berne 2024-09-06 2024-09 P3290R1 SG21 Contracts,EWG Evolution
P3295R1 Freestanding constexpr containers and constexpr exception types Ben Craig 2024-09-15 2024-09 P3295R0 LEWG Library Evolution
P3299R1 Range constructors for std::simd Daniel Towner 2024-09-16 2024-09 P3299R0 LEWG Library Evolution
P3309R2 constexpr atomic and atomic_ref Hana Dusíková 2024-08-29 2024-09 P3309R1 LEWG Library Evolution
P3335R1 Structured Core Options René Ferdinand Rivera Morell 2024-09-17 2024-09 P3335R0 SG15 Tooling
P3371R1 Fix C++26 by making the rank-1, rank-2, rank-k, and rank-2k updates consistent with the BLAS Mark Hoemmen 2024-09-14 2024-09 P3371R0 LEWG Library Evolution
P3372R1 constexpr containers and adapters Hana Dusíková 2024-09-17 2024-09 P3372R0 LEWG Library Evolution
P3375R0 Reproducible floating-point results Guy Davidson 2024-09-10 2024-09   SG6 Numerics,SG14 Low Latency,LEWG Library Evolution
P3379R0 Constrain std::expected equality operators Jonathan Wakely 2024-08-27 2024-09   LEWG Library Evolution
P3380R0 Extending support for class types as non-type template parameters Barry Revzin 2024-09-09 2024-09   EWG Evolution
P3381R0 Syntax for Reflection Barry Revzin 2024-09-16 2024-09   EWG Evolution
P3382R0 Coarse clocks and resolutions Antony Polukhin 2024-08-28 2024-09   LEWGI SG18: LEWG Incubator,LEWG Library Evolution,LWG Library
P3383R0 mdspan.at() Stephan Lachnit 2024-09-04 2024-09   LEWGI SG18: LEWG Incubator
P3384R0 __COUNTER__ Jeremy Rifkin 2024-09-05 2024-09   EWG Evolution
P3385R0 Attributes reflection Aurelien Cassagnes 2024-09-16 2024-09   SG7 Reflection
P3388R0 When Do You Know connect Doesn't Throw? Robert Leahy 2024-09-10 2024-09   LEWG Library Evolution
P3389R0 Of Operation States and Their Lifetimes (LEWG Presentation 2024-09-10) Robert Leahy 2024-09-10 2024-09   LEWG Library Evolution
P3390R0 Safe C++ Sean Baxter 2024-09-11 2024-09   SG23 Safety and Security
P3391R0 constexpr std::format Barry Revzin 2024-09-12 2024-09   LEWG Library Evolution
P3392R0 Do not promise support for function syntax of operators Corentin Jabot 2024-09-14 2024-09   LEWG Library Evolution
P3396R0 std::execution wording fixes Lewis Baker 2024-09-16 2024-09   LWG Library
P3397R0 Clarify requirements on extended floating point types Hans Boehm 2024-09-16 2024-09   SG6 Numerics
P3398R0 User specified type decay Bengt Gustafsson 2024-09-17 2024-09   EWGI SG17: EWG Incubator
P3401R0 Enrich Creation Functions for the Pointer-Semantics-Based Polymorphism Library - Proxy Tian Liao 2024-09-17 2024-09   LEWGI SG18: LEWG Incubator,LEWG Library Evolution
P3402R0 A Safety Profile Verifying Class Initialization Marc-André Laverdière 2024-09-17 2024-09   SG23 Safety and Security

2024-08 Mailing Available

The 2024-08 mailing of new standards papers is now available.

 

WG21 Number Title Author Document Date Mailing Date Previous Version Subgroup
N4988 Working Draft, Programming Languages -- C++ Thomas Köppe 2024-08-05 2024-08   All of WG21
N4989 Editors' Report, Programming Languages -- C++ Thomas Köppe 2024-08-05 2024-08   All of WG21
P2414R4 Pointer lifetime-end zap proposed solutions Paul E. McKenney 2024-08-12 2024-08 P2414R3 SG1 Concurrency and Parallelism
P2822R2 Providing user control of associated entities of class types Lewis Baker 2024-08-07 2024-08 P2822R1 EWG Evolution
P2897R4 aligned_accessor: An mdspan accessor expressing pointer overalignment Mark Hoemmen 2024-07-24 2024-08 P2897R3 LEWG Library Evolution,LWG Library
P2897R5 aligned_accessor: An mdspan accessor expressing pointer overalignment Mark Hoemmen 2024-08-11 2024-08 P2897R4 LEWG Library Evolution,LWG Library
P2900R8 Contracts for C++ Joshua Berne 2024-07-27 2024-08 P2900R7 EWG Evolution,LEWG Library Evolution
P2988R6 std::optional<T&> Steve Downey 2024-08-15 2024-08 P2988R5 LEWG Library Evolution,LWG Library
P2996R5 Reflection for C++26 Barry Revzin 2024-08-14 2024-08 P2996R4 EWG Evolution
P3050R2 Fix C++26 by optimizing linalg::conjugated for noncomplex value types Mark Hoemmen 2024-08-12 2024-08 P3050R1 LEWG Library Evolution
P3068R4 Allowing exception throwing in constant-evaluation Hana Dusíková 2024-08-15 2024-08 P3068R3 LEWG Library Evolution,CWG Core
P3126R2 Graph Library: Overview Phil Ratzloff 2024-08-05 2024-08 P3126R1 SG14 Low Latency,SG19 Machine Learning
P3130R2 Graph Library: Graph Container Interface Phil Ratzloff 2024-08-05 2024-08 P3130R1 SG14 Low Latency,SG19 Machine Learning
P3131R2 Graph Library: Graph Containers Phil Ratzloff 2024-08-05 2024-08 P3131R1 SG14 Low Latency,SG19 Machine Learning
P3284R1 `finally`, `write_env`, and `unstoppable` Sender Adaptors Eric Niebler 2024-07-16 2024-08 P3284R0 LEWG Library Evolution
P3315R0 2024-07 Library Evolution Poll Outcomes Inbal Levi 2024-08-15 2024-08   LEWG Library Evolution
P3325R3 A Utility for Creating Execution Environments Eric Niebler 2024-07-23 2024-08 P3325R2 LEWG Library Evolution
P3347R0 Invalid/Prospective Pointer Operations Paul E. McKenney 2024-08-09 2024-08   EWG Evolution
P3348R0 C++26 should refer to C23 not C17 Jonathan Wakely 2024-08-02 2024-08   SG6 Numerics,LEWG Library Evolution
P3361R0 Class invariants and contract checking philosophy Esa Pulkkinen 2024-07-18 2024-08   SG21 Contracts
P3361R1 Class invariants and contract checking philosophy Esa Pulkkinen 2024-07-23 2024-08 P3361R0 SG21 Contracts
P3362R0 Static analysis and 'safety' of Contracts, P2900 vs. P2680/P3285 Ville Voutilainen 2024-08-13 2024-08   EWG Evolution
P3364R0 Remove Deprecated u8path overloads From C++26 Alisdair Meredith 2024-08-15 2024-08   SG16 Unicode
P3365R0 Remove the Deprecated iterator Class Template from C++26 Alisdair Meredith 2024-08-15 2024-08   LEWG Library Evolution
P3366R0 Remove Deprecated Atomic Initialization API from C++26 Alisdair Meredith 2024-08-15 2024-08   SG1 Concurrency and Parallelism,LEWG Library Evolution
P3369R0 constexpr for uninitialized_default_construct Giuseppe D'Angelo 2024-07-28 2024-08   LEWG Library Evolution
P3370R0 Add new library headers from C23 Jens Maurer 2024-08-15 2024-08   LEWG Library Evolution
P3371R0 Fix C++26 by making the symmetric and Hermitian rank-k and rank-2k updates consistent with the BLAS Mark Hoemmen 2024-08-11 2024-08   LEWG Library Evolution,LWG Library
P3372R0 constexpr containers and adapters Hana Dusíková 2024-08-15 2024-08   LEWG Library Evolution
P3373R0 Of Operation States and Their Lifetimes Robert Leahy 2024-08-14 2024-08   LEWG Library Evolution
P3374R0 Adding formatter for fpos Liang Jiaming 2024-08-14 2024-08   LEWGI SG18: LEWG Incubator

2024-07 Mailing Available

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

 

WG21 Number Title Author Document Date Mailing Date Previous Version Subgroup
N4984 WG21 June 2024 Admin Minutes of Meeting Nina Ranns 2024-06-17 2024-07   All of WG21
N4985 WG21 2024-06 St Louis Minutes of Meeting Nina Ranns 2024-07-11 2024-07   All of WG21
N4986 Working Draft, Programming Languages -- C++ Thomas Köppe 2024-07-16 2024-07   All of WG21
N4987 Editors' Report, Programming Languages -- C++ Thomas Köppe 2024-07-16 2024-07   All of WG21
P0260R10 C++ Concurrent Queues Detlef Vollmann 2024-06-27 2024-07 P0260R9 LEWG Library Evolution
P0472R1 Put std::monostate in <utility> David Sankel 2024-06-05 2024-07 P0472R0 LEWG Library Evolution
P0843R13 inplace_vector Gonzalo Brito Gadeschi 2024-06-17 2024-07 P0843R12 LEWG Library Evolution,LWG Library
P0843R14 inplace_vector Gonzalo Brito Gadeschi 2024-06-26 2024-07 P0843R13 LWG Library
P0876R17 fiber_context - fibers without scheduler Oliver Kowalke 2024-07-03 2024-07 P0876R16 EWG Evolution,CWG Core,LWG Library
P0963R3 Structured binding declaration as a condition Zhihao Yuan 2024-06-28 2024-07 P0963R2 CWG Core
P1928R10 std::simd - Merge data-parallel types from the Parallelism TS 2 Matthias Kretz 2024-06-28 2024-07 P1928R9 LWG Library
P1928R11 std::simd - Merge data-parallel types from the Parallelism TS 2 Matthias Kretz 2024-07-16 2024-07 P1928R10 LWG Library
P2075R6 Philox as an extension of the C++ RNG engines Ilya Burylov 2024-06-28 2024-07 P2075R5 LWG Library
P2300R10 `std::execution` Eric Niebler 2024-06-28 2024-07 P2300R9 LEWG Library Evolution,LWG Library
P2319R0 Prevent path presentation problems Victor Zverovich 2024-07-06 2024-07   SG16 Unicode
P2389R2 `dextents` Index Type Parameter Bryce Adelstein Lelbach 2024-06-24 2024-07 P2389R1 LEWG Library Evolution
P2422R1 Remove nodiscard annotations from the standard library specification Ville Voutilainen 2024-06-28 2024-07 P2422R0 LEWG Library Evolution,LWG Library
P2642R6 Padded mdspan layouts Christian Trott 2024-06-18 2024-07 P2642R5 LEWG Library Evolution,LWG Library
P2656R3 C++ Ecosystem International Standard René Ferdinand Rivera Morell 2024-07-11 2024-07 P2656R2 EWG Evolution,LEWG Library Evolution
P2664R7 Proposal to extend std::simd with permutation API Daniel Towner 2024-06-25 2024-07 P2664R6 SG1 Concurrency and Parallelism,LEWG Library Evolution
P2686R4 constexpr structured bindings and references to constexpr variables Corentin Jabot 2024-07-05 2024-07 P2686R3 EWG Evolution,LEWG Library Evolution,CWG Core
P2761R2 Slides: Evaluating structured binding as a condition (P0963R2 presentation) Zhihao Yuan 2024-06-13 2024-07 P2761R1 EWG Evolution
P2761R3 Slides: Structured binding declaration as a condition (P0963R2 presentation) Zhihao Yuan 2024-06-26 2024-07 P2761R2 EWG Evolution
P2769R2 get_element customization point object Ruslan Arutyunyan 2024-06-25 2024-07 P2769R1 SG9 Ranges,LEWG Library Evolution
P2848R1 std::is_uniqued Arthur O'Dwyer 2024-07-14 2024-07 P2848R0 LEWG Library Evolution
P2863R6 Review Annex D for C++26 Alisdair Meredith 2024-06-23 2024-07 P2863R5 EWG Evolution,LEWG Library Evolution
P2863R7 Review Annex D for C++26 Alisdair Meredith 2024-07-09 2024-07 P2863R6 SG22 Compatibility,EWG Evolution,LEWG Library Evolution
P2865R5 Remove Deprecated Array Comparisons from C++26 Alisdair Meredith 2024-07-09 2024-07 P2865R4 SG22 Compatibility
P2866R3 Remove Deprecated Volatile Features From C++26 Alisdair Meredith 2024-06-28 2024-07 P2866R2 CWG Core,LWG Library
P2866R4 Remove Deprecated Volatile Features From C++26 Alisdair Meredith 2024-07-15 2024-07 P2866R3 SG22 Compatibility,CWG Core,LWG Library
P2873R2 Remove Deprecated locale category facets for Unicode from C++26 Alisdair Meredith 2024-07-06 2024-07 P2873R1 LEWG Library Evolution
P2897R2 aligned_accessor: An mdspan accessor expressing pointer overalignment Mark Hoemmen 2024-07-12 2024-07 P2897R1 LEWG Library Evolution
P2897R3 aligned_accessor: An mdspan accessor expressing pointer overalignment Mark Hoemmen 2024-07-15 2024-07 P2897R2 LEWG Library Evolution,LWG Library
P2963R3 Ordering of constraints involving fold expressions Corentin Jabot 2024-06-28 2024-07 P2963R2 CWG Core
P2989R2 A Simple Approach to Universal Template Parameters Corentin Jabot 2024-06-16 2024-07 P2989R1 EWG Evolution
P2996R4 Reflection for C++26 Barry Revzin 2024-06-26 2024-07 P2996R3 EWG Evolution
P3006R1 Launder less Antony Polukhin 2024-07-11 2024-07 P3006R0 SG12 Undefined and Unspecified Behavior,EWG Evolution,CWG Core
P3037R2 constexpr std::shared_ptr Paul Keir 2024-05-24 2024-07 P3037R1 LEWG Library Evolution
P3044R1 sub-string_view from string Michael Florian Hava 2024-07-15 2024-07 P3044R0 LEWG Library Evolution
P3051R2 Structured Response Files René Ferdinand Rivera Morell 2024-07-11 2024-07 P3051R1 EWG Evolution,LEWG Library Evolution
P3064R2 How to Avoid OOTA Without Really Trying Paul E. McKenney 2024-07-12 2024-07 P3064R1 SG1 Concurrency and Parallelism
P3068R3 Allowing exception throwing in constant-evaluation Hana Dusíková 2024-06-27 2024-07 P3068R2 EWG Evolution,LEWG Library Evolution
P3085R3 `noexcept` policy for SD-9 (throws nothing) Ben Craig 2024-07-04 2024-07 P3085R2 LEWG Library Evolution
P3087R1 Make direct-initialization for enumeration types at least as permissive as direct-list-initializatio Jan Schultke 2024-05-29 2024-07 P3087R0 EWG Evolution
P3094R3 std::basic_fixed_string Mateusz Pusz 2024-06-30 2024-07 P3094R2 SG16 Unicode,LEWG Library Evolution
P3096R2 Function Parameter Reflection in Reflection for C++26 Adam Lach 2024-07-16 2024-07 P3096R1 EWG Evolution,LEWG Library Evolution
P3124R0 2024-02 Library Evolution Poll Outcomes   2024-06-14 2024-07   LEWG Library Evolution
P3137R2 views::to_input Tim Song 2024-07-16 2024-07 P3137R1 LEWG Library Evolution
P3138R2 views::cache_last Tim Song 2024-07-16 2024-07 P3138R1 LEWG Library Evolution
P3144R1 Deprecate Delete of Incomplete Class Type Alisdair Meredith 2024-05-23 2024-07 P3144R0 CWG Core
P3144R2 Deleting a Pointer to an Incomplete Type Should be Ill-formed Alisdair Meredith 2024-06-25 2024-07 P3144R1 CWG Core
P3149R4 async_scope -- Creating scopes for non-sequential concurrency Ian Petersen 2024-06-23 2024-07 P3149R3 SG1 Concurrency and Parallelism,LEWG Library Evolution
P3149R5 async_scope -- Creating scopes for non-sequential concurrency Ian Petersen 2024-06-25 2024-07 P3149R4 LEWG Library Evolution
P3161R2 Unified integer overflow arithmetic Tiago Freire 2024-07-15 2024-07 P3161R1 SG6 Numerics
P3164R1 Improving diagnostics for sender expressions Eric Niebler 2024-06-15 2024-07 P3164R0 LEWG Library Evolution
P3164R2 Improving diagnostics for sender expressions Eric Niebler 2024-06-24 2024-07 P3164R1 LEWG Library Evolution
P3168R2 Give std::optional Range Support David Sankel 2024-06-25 2024-07 P3168R1 LEWG Library Evolution
P3175R3 Reconsidering the `std::execution::on` algorithm Eric Niebler 2024-06-24 2024-07 P3175R2 LEWG Library Evolution
P3178R0 Retrieval of Exception Information TPK Healy 2024-05-23 2024-07   LEWGI SG18: LEWG Incubator
P3178R1 Retrieval of Exception Information TPK Healy 2024-05-30 2024-07 P3178R0 LEWGI SG18: LEWG Incubator
P3179R2 C++ parallel range algorithms Ruslan Arutyunyan 2024-06-25 2024-07 P3179R1 SG1 Concurrency and Parallelism,SG9 Ranges
P3182R1 Add container pop methods that return the popped value Brian Bi 2024-07-16 2024-07 P3182R0 LEWG Library Evolution
P3212R0 The contract of sort() Andrzej Krzemieński 2024-07-03 2024-07   SG21 Contracts,EWG Evolution,LEWG Library Evolution
P3223R1 Making std::istream::ignore less surprising Jonathan Wakely 2024-07-03 2024-07 P3223R0 LEWG Library Evolution
P3235R1 std::print more types faster with less memory Victor Zverovich 2024-06-15 2024-07 P3235R0 LEWG Library Evolution
P3235R2 std::print more types faster with less memory Victor Zverovich 2024-06-25 2024-07 P3235R1 LWG Library
P3235R3 std::print more types faster with less memory Victor Zverovich 2024-06-26 2024-07 P3235R2 LWG Library
P3245R1 Allow `[[nodiscard]]` in type alias declarations Xavier Bonaventura 2024-07-15 2024-07 P3245R0 EWGI SG17: EWG Incubator
P3248R1 Require [u]intptr_t Gonzalo Brito Gadeschi 2024-06-16 2024-07 P3248R0 SG1 Concurrency and Parallelism,SG22 Compatibility,EWG Evolution,LEWG Library Evolution
P3255R1 Expose whether atomic notifying operations are lock-free Brian Bi 2024-07-16 2024-07 P3255R0 LEWG Library Evolution
P3265R2 Ship Contracts in a TS Ville Voutilainen 2024-05-27 2024-07 P3265R1 EWG Evolution
P3265R3 Ship Contracts in a TS Ville Voutilainen 2024-05-28 2024-07 P3265R2 EWG Evolution
P3288R1 std::elide Thomas P. K. Healy 2024-05-28 2024-07 P3288R0 EWGI SG17: EWG Incubator,LEWGI SG18: LEWG Incubator
P3288R2 std::elide Thomas P. K. Healy 2024-05-29 2024-07 P3288R1 EWGI SG17: EWG Incubator,LEWGI SG18: LEWG Incubator
P3288R3 std::elide Thomas P. K. Healy 2024-06-27 2024-07 P3288R2 EWGI SG17: EWG Incubator,LEWGI SG18: LEWG Incubator
P3290R1 Integrating Existing Assertions With Contracts Joshua Berne 2024-07-12 2024-07 P3290R0 SG21 Contracts,EWG Evolution
P3294R1 Code Injection with Token Sequences Barry Revzin 2024-07-16 2024-07 P3294R0 SG7 Reflection,EWG Evolution
P3296R1 let_with_async_scope Anthony Williams 2024-06-24 2024-07 P3296R0 SG1 Concurrency and Parallelism,LEWG Library Evolution
P3297R1 C++26 Needs Contract Checking Ryan McDougall 2024-06-21 2024-07 P3297R0 SG21 Contracts,SG23 Safety and Security,EWG Evolution
P3303R1 Fixing Lazy Sender Algorithm Customization Eric Niebler 2024-06-24 2024-07 P3303R0 LEWG Library Evolution
P3309R1 constexpr atomic and atomic_ref Hana Dusíková 2024-07-14 2024-07 P3309R0 LEWG Library Evolution
P3310R1 Solving partial ordering issues introduced by P0522R0 Matheus Izvekov 2024-06-21 2024-07 P3310R0 EWG Evolution,CWG Core
P3310R2 Solving partial ordering issues introduced by P0522R0 Matheus Izvekov 2024-06-21 2024-07 P3310R1 EWG Evolution,CWG Core
P3314R0 2024-07 Library Evolution Polls Inbal Levi 2024-07-16 2024-07   LEWG Library Evolution
P3319R1 Add an iota object for simd (and more) Matthias Kretz 2024-06-28 2024-07 P3319R0 LEWG Library Evolution
P3321R0 Contracts Interaction With Tooling Joshua Berne 2024-07-12 2024-07   SG15 Tooling,SG21 Contracts,EWG Evolution
P3323R0 cv-qualified types in atomic and atomic_ref Gonzalo Brito Gadeschi 2024-06-16 2024-07   SG1 Concurrency and Parallelism
P3325R0 A Utility for Creating Execution Environments Eric Niebler 2024-06-13 2024-07   LEWG Library Evolution
P3325R1 A Utility for Creating Execution Environments Eric Niebler 2024-07-13 2024-07 P3325R0 LEWG Library Evolution
P3325R2 A Utility for Creating Execution Environments Eric Niebler 2024-07-16 2024-07 P3325R1 LEWG Library Evolution
P3326R0 favor ease of use Jarrad J. Waterloo 2024-06-13 2024-07   LEWG Library Evolution
P3328R0 Observable Checkpoints During Contract Evaluation Joshua Berne 2024-06-13 2024-07   SG21 Contracts
P3330R0 User-defined Atomic Read-Modify-Write Operations Gonzalo Brito 2024-06-17 2024-07   SG1 Concurrency and Parallelism
P3331R0 Accessing The First and Last Elements in Associative Containers Nikita Sakharin 2024-06-18 2024-07   LEWGI SG18: LEWG Incubator,LEWG Library Evolution,LWG Library
P3332R0 A simpler notation for PM Bjarne Stroustrup 2024-06-18 2024-07   EWG Evolution
P3335R0 Structured Core Options René Ferdinand Rivera Morell 2024-07-11 2024-07   SG15 Tooling
P3336R0 Usage Experience for Contracts with BDE Joshua Berne 2024-06-23 2024-07   SG21 Contracts,EWG Evolution
P3338R0 Observe and ignore semantics in constant evaluation Ville Voutilainen 2024-06-23 2024-07   EWG Evolution
P3339R0 C++ Ecosystem IS Open License René Ferdinand Rivera Morell 2024-06-23 2024-07   All of WG21
P3340R0 A Consistent Grammar for Sequences Alisdair Meredith 2024-06-24 2024-07   CWG Core
P3341R0 C++ Standard Library Ready Issues to be moved in St Louis, Jun. 2024 Jonathan Wakely 2024-06-24 2024-07   All of WG21
P3342R0 Working Draft, Standard for C++ Ecosystem René Ferdinand Rivera Morell 2024-07-11 2024-07   EWG Evolution,LEWG Library Evolution
P3343R0 Contracts - What are we doing here (EWG Presentation) Joshua Berne 2024-06-25 2024-07   EWG Evolution
P3344R0 Virtual Functions on Contracts (EWG - Presentation for P3097) Joshua Berne 2024-06-28 2024-07   EWG Evolution
P3345R0 Core Language Working Group "ready" Issues for the June, 2024 meeting Jens Maurer 2024-06-28 2024-07   CWG Core
P3351R0 views::scan Yihe Li 2024-07-08 2024-07   SG9 Ranges
P3354R0 Slides for P3233R0 Giuseppe D'Angelo 2024-07-09 2024-07   SG12 Undefined and Unspecified Behavior,EWG Evolution
P3355R0 Fix submdspan for C++26 Mark Hoemmen 2024-07-14 2024-07   LEWG Library Evolution
P3356R0 non_invalidating_vector Jarrad J Waterloo 2024-07-13 2024-07   LEWGI SG18: LEWG Incubator,LEWG Library Evolution
P3357R0 NRVO with factory and after_factory TPK Healy 2024-07-15 2024-07   EWGI SG17: EWG Incubator,LEWGI SG18: LEWG Incubator
P3358R0 SARIF for Structured Diagnostics Sy Brand 2024-07-16 2024-07   SG15 Tooling
P3359R0 Slides for P3298R0 - Implicit conversion functions Bengt Gustafsson 2024-07-15 2024-07   EWGI SG17: EWG Incubator,EWG Evolution
P3360R0 Slides for P3312R0 - Overload Set Types Bengt Gustafsson 2024-07-15 2024-07   EWGI SG17: EWG Incubator

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

2024-04 Mailing Available

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

 

WG21 Number Title Author Document Date Mailing Date Previous Version Subgroup
N4974 2024-11 Wroclaw meeting information Herb Sutter 2024-03-18 2024-04   All of WG21
N4975 2024 WG21 admin telecon meetings Herb Sutter 2024-02-21 2024-04   All of WG21
N4976 WG21 agenda: 18-23 March 2024, Tokyo, Japan John Spicer 2024-02-26 2024-04   All of WG21
N4978 WG21 2024-03 Admin telecon minutes Nina Ranns 2024-03-11 2024-04   All of WG21
N4979 Hagenberg Meeting Invitation and Information Peter Kulczycki 2024-03-22 2024-04   All of WG21
N4980 WG21 2024-03 Tokyo Minutes of Meeting Nina Ranns 2024-04-05 2024-04   All of WG21
N4981 Working Draft, Programming Languages -- C++ Thomas Köppe 2024-04-16 2024-04   All of WG21
N4982 Editors' Report, Programming Languages -- C++ Thomas Köppe 2024-04-16 2024-04   All of WG21
P0260R8 C++ Concurrent Queues Detlef Vollmann 2024-03-09 2024-04 P0260R7 SG1 Concurrency and Parallelism,LEWG Library Evolution
P0562R1 Initialization List Symmetry Alan Talbot 2024-03-21 2024-04 P0562R0 EWG Evolution
P0562R2 Trailing Commas in Base-clauses and Ctor-initializers Alan Talbot 2024-04-15 2024-04 P0562R1 CWG Core
P0609R3 Attributes for Structured Bindings Aaron Ballman 2024-03-21 2024-04 P0609R2 CWG Core
P0843R11 inplace_vector Gonzalo Brito Gadeschi 2024-03-21 2024-04 P0843R10 LWG Library
P0876R16 fiber_context - fibers without scheduler Oliver Kowalke 2024-03-22 2024-04 P0876R15 EWG Evolution,CWG Core,LWG Library
P1061R8 Structured Bindings can introduce a Pack Barry Revzin 2024-04-14 2024-04 P1061R7 CWG Core
P1068R11 Vector API for random number generation Ilya Burylov 2024-04-01 2024-04 P1068R10 LWG Library
P1317R1 Remove return type deduction in std::apply Aaryaman Sagar 2024-04-03 2024-04 P1317R0 LEWG Library Evolution
P2034R3 Partially Mutable Lambda Captures Ryan McDougall 2024-03-20 2024-04 P2034R2 EWGI SG17: EWG Incubator,EWG Evolution,CWG Core
P2075R5 Philox as an extension of the C++ RNG engines Ilya Burylov 2024-04-01 2024-04 P2075R4 LEWG Library Evolution,LWG Library
P2127R0 Making C++ Software Allocator Aware Pablo Halpern 2024-03-11 2024-04   LEWG Library Evolution
P2135R1 P2055R1: A Relaxed Guide to memory_order_relaxed Paul E. McKenney 2024-04-09 2024-04 P2135R0 SG1 Concurrency and Parallelism
P2141R2 Aggregates are named tuples Antony Polukhin 2024-03-06 2024-04 P2141R1 LEWG Library Evolution,LWG Library
P2248R8 Enabling list-initialization for algorithms Giuseppe D'Angelo 2024-03-20 2024-04 P2248R7 LWG Library
P2300R8 `std::execution` Eric Niebler 2024-04-02 2024-04 P2300R7 LEWG Library Evolution,LWG Library
P2300R9 `std::execution` Eric Niebler 2024-04-02 2024-04 P2300R8 LEWG Library Evolution,LWG Library
P2355R2 Postfix fold expressions S. Davis Herring 2024-03-20 2024-04 P2355R1 EWG Evolution
P2389R1 `dextents` Index Type Parameter Bryce Adelstein Lelbach 2024-04-12 2024-04 P2389R0 LEWG Library Evolution
P2414R3 Pointer lifetime-end zap proposed solutions Paul E. McKenney 2024-04-08 2024-04 P2414R2 SG1 Concurrency and Parallelism,EWG Evolution
P2542R8 views::concat Hui Xie 2024-03-20 2024-04 P2542R7 SG9 Ranges,LEWG Library Evolution,LWG Library
P2573R2 = delete("should have a reason"); Yihe Li 2024-03-21 2024-04 P2573R1 CWG Core
P2591R5 Concatenation of strings and string views Giuseppe D'Angelo 2024-03-20 2024-04 P2591R4 LWG Library
P2746R5 Deprecate and Replace Fenv Rounding Modes Hans Boehm 2024-04-15 2024-04 P2746R4 SG6 Numerics,LEWG Library Evolution
P2747R2 constexpr placement new Barry Revzin 2024-03-18 2024-04 P2747R1 EWG Evolution
P2748R5 Disallow Binding a Returned Glvalue to a Temporary Brian Bi 2024-03-22 2024-04 P2748R4 CWG Core
P2755R1 A Bold Plan for a Complete Contracts Facility Joshua Berne, Jake Fevold, John Lakos 2024-04-10 2024-04 P2755R0 SG21 Contracts
P2786R5 Trivial Relocatability For C++26 Mungo Gill 2024-04-09 2024-04 P2786R4 EWG Evolution,LEWG Library Evolution
P2795R5 Erroneous behaviour for uninitialized reads Thomas Köppe 2024-03-21 2024-04 P2795R4 SG12 Undefined and Unspecified Behavior,SG23 Safety and Security,EWG Evolution,CWG Core,LWG Library
P2809R3 Trivial infinite loops are not Undefined Behavior JF Bastien 2024-03-21 2024-04 P2809R2 SG22 Compatibility,CWG Core
P2810R4 is_debugger_present is_replaceable René Ferdinand Rivera Morell 2024-03-20 2024-04 P2810R3 LWG Library
P2825R1 Overload Resolution hook: declcall(unevaluated-postfix-expression) Gašper Ažman 2024-03-20 2024-04 P2825R0 EWGI SG17: EWG Incubator,EWG Evolution
P2825R2 Overload Resolution hook: declcall(unevaluated-postfix-expression) Gašper Ažman 2024-04-16 2024-04 P2825R1 EWG Evolution
P2826R2 Replacement functions Gašper Ažman 2024-03-17 2024-04 P2826R1 EWG Evolution
P2830R2 Standardized Constexpr Type Ordering Gašper Ažman 2024-03-17 2024-04 P2830R1 EWG Evolution
P2830R3 Standardized Constexpr Type Ordering Gašper Ažman 2024-04-16 2024-04 P2830R2 EWG Evolution
P2841R2 Concept and variable-template template-parameters Corentin Jabot 2024-02-22 2024-04 P2841R1 EWG Evolution
P2845R7 Formatting of std::filesystem::path Victor Zverovich 2024-03-10 2024-04 P2845R6 LEWG Library Evolution,LWG Library
P2845R8 Formatting of std::filesystem::path Victor Zverovich 2024-03-20 2024-04 P2845R7 LWG Library
P2855R1 Member customization points for Senders and Receivers Ville Voutilainen 2024-02-22 2024-04 P2855R0 LEWG Library Evolution
P2863R5 Review Annex D for C++26 Alisdair Meredith 2024-04-16 2024-04 P2863R4 EWG Evolution,LEWG Library Evolution
P2866R2 Remove Deprecated Volatile Features From C++26 Alisdair Meredith 2024-04-16 2024-04 P2866R1 SG1 Concurrency and Parallelism,LEWG Library Evolution
P2867R2 Remove Deprecated strstreams From C++26 Alisdair Meredith 2024-03-19 2024-04 P2867R1 LWG Library
P2869R4 Remove Deprecated `shared_ptr` Atomic Access APIs From C++26 Alisdair Meredith 2024-03-20 2024-04 P2869R3 LWG Library
P2872R3 Remove `wstring_convert` From C++26 Alisdair Meredith 2024-03-19 2024-04 P2872R2 LWG Library
P2873R1 Remove Deprecated locale category facets for Unicode from C++26 Alisdair Meredith 2024-04-08 2024-04 P2873R0 LEWG Library Evolution
P2875R4 Undeprecate `polymorphic_allocator::destroy` For C++26 Alisdair Meredith 2024-03-20 2024-04 P2875R3 LWG Library
P2893R3 Variadic Friends Jody Hagins 2024-03-21 2024-04 P2893R2 CWG Core
P2900R6 Contracts for C++ Joshua Berne 2024-02-29 2024-04 P2900R5 EWG Evolution,LEWG Library Evolution
P2927R2 Observing exceptions stored in exception_ptr Gor Nishanov 2024-04-15 2024-04 P2927R1 LEWG Library Evolution
P2944R3 Comparisons for reference_wrapper Barry Revzin 2024-03-20 2024-04 P2944R2 EWG Evolution,LEWG Library Evolution
P2977R1 Build database files Ben Boeckel 2024-03-25 2024-04 P2977R0 SG15 Tooling
P2988R4 std::optional<T&> Steve Downey 2024-04-16 2024-04 P2988R3 LEWG Library Evolution,LWG Library
P2993R0 Constrained Numbers Luke Valenty 2024-03-21 2024-04   SG6 Numerics,SG23 Safety and Security
P2997R1 Removing the common reference requirement from the indirectly invocable concepts Barry Revzin 2024-03-21 2024-04 P2997R0 SG9 Ranges,LEWG Library Evolution
P3008R2 Atomic floating-point min/max Gonzalo Brito Gadeschi 2024-03-18 2024-04 P3008R1 LEWG Library Evolution
P3016R3 Resolve inconsistencies in begin/end for valarray and braced initializer lists Arthur O'Dwyer 2024-03-22 2024-04 P3016R2 LWG Library
P3019R7 Vocabulary Types for Composite Class Design Jonathan Coe 2024-03-18 2024-04 P3019R6 LEWG Library Evolution,LWG Library
P3019R8 Vocabulary Types for Composite Class Design Jonathan Coe 2024-03-22 2024-04 P3019R7 LEWG Library Evolution,LWG Library
P3029R1 Better mdspan's CTAD Hewill Kang 2024-03-20 2024-04 P3029R0 LEWG Library Evolution
P3032R1 Less transient constexpr allocation Barry Revzin 2024-03-21 2024-04 P3032R0 EWG Evolution
P3032R2 Less transient constexpr allocation Barry Revzin 2024-04-16 2024-04 P3032R1 EWG Evolution
P3034R1 Module Declarations Shouldn't be Macros Michael Spencer 2024-03-20 2024-04 P3034R0 All of WG21
P3037R1 constexpr std::shared_ptr Paul Keir 2024-03-05 2024-04 P3037R0 SG7 Reflection,LEWG Library Evolution
P3049R0 node-handles for lists Michael Florian Hava 2024-04-03 2024-04   LEWG Library Evolution
P3050R1 Fix C++26 by optimizing linalg::conjugated for noncomplex value types Mark Hoemmen 2024-04-08 2024-04 P3050R0 LEWG Library Evolution
P3064R0 How to Avoid OOTA Without Really Trying Paul E. McKenney 2024-04-05 2024-04   SG1 Concurrency and Parallelism
P3068R1 Allowing exception throwing in constant-evaluation. Hana Dusíková 2024-03-30 2024-04 P3068R0 EWG Evolution
P3072R2 Hassle-free thread attributes Zhihao Yuan 2024-03-17 2024-04 P3072R1 LEWG Library Evolution
P3074R3 trivial union (was std::uninitialized<T>) Barry Revzin 2024-04-14 2024-04 P3074R2 EWG Evolution
P3085R1 `noexcept` policy for SD-9 (throws nothing) Ben Craig 2024-03-17 2024-04 P3085R0 LEWG Library Evolution
P3086R1 Proxy: A Pointer-Semantics-Based Polymorphism Library Mingxin Wang 2024-03-18 2024-04 P3086R0 LEWGI SG18: LEWG Incubator,LEWG Library Evolution
P3086R2 Proxy: A Pointer-Semantics-Based Polymorphism Library Mingxin Wang 2024-04-16 2024-04 P3086R1 LEWG Library Evolution
P3091R1 Better lookups for `map` and `unordered_map` Pablo Halpern 2024-03-22 2024-04 P3091R0 LEWGI SG18: LEWG Incubator
P3094R1 std::basic_fixed_string Mateusz Pusz 2024-03-20 2024-04 P3094R0 SG16 Unicode,LEWG Library Evolution
P3097R0 Contracts for C++: Support for virtual functions Timur Doumler 2024-04-15 2024-04   SG21 Contracts
P3103R1 More bitset operations Jan Schultke 2024-03-07 2024-04 P3103R0 LEWGI SG18: LEWG Incubator
P3104R1 Bit permutations Jan Schultke 2024-03-07 2024-04 P3104R0 LEWGI SG18: LEWG Incubator
P3104R2 Bit permutations Jan Schultke 2024-04-04 2024-04 P3104R1 LEWGI SG18: LEWG Incubator
P3105R1 constexpr std::uncaught_exceptions() Jan Schultke 2024-03-07 2024-04 P3105R0 LEWGI SG18: LEWG Incubator
P3105R2 constexpr std::uncaught_exceptions() Jan Schultke 2024-04-04 2024-04 P3105R1 LEWGI SG18: LEWG Incubator
P3106R1 Clarifying rules for brace elision in aggregate initialization James Touton 2024-03-20 2024-04 P3106R0 CWG Core
P3107R1 Permit an efficient implementation of std::print Victor Zverovich 2024-02-25 2024-04 P3107R0 LEWG Library Evolution
P3107R2 Permit an efficient implementation of std::print Victor Zverovich 2024-03-17 2024-04 P3107R1 LEWG Library Evolution
P3107R3 Permit an efficient implementation of std::print Victor Zverovich 2024-03-18 2024-04 P3107R2 LEWG Library Evolution
P3107R4 Permit an efficient implementation of std::print Victor Zverovich 2024-03-19 2024-04 P3107R3 LEWG Library Evolution
P3107R5 Permit an efficient implementation of std::print Victor Zverovich 2024-03-21 2024-04 P3107R4 LWG Library
P3119R0 Tokyo Technical Fixes to Contracts Joshua Berne 2024-04-04 2024-04   SG21 Contracts
P3122R1 [[nodiscard]] should be Recommended Practice Jonathan Wakely 2024-03-12 2024-04 P3122R0 LEWG Library Evolution,LWG Library
P3135R1 Hazard Pointer Extensions Maged Michael 2024-04-12 2024-04 P3135R0 SG1 Concurrency and Parallelism
P3146R1 Clarifying std::variant converting construction Giuseppe D'Angelo 2024-02-20 2024-04 P3146R0 LEWG Library Evolution,LWG Library
P3147R1 A Direction for Vector Alan Talbot 2024-03-17 2024-04 P3147R0 LEWG Library Evolution
P3149R1 async_scope -- Creating scopes for non-sequential concurrency Ian Petersen 2024-03-13 2024-04 P3149R0 SG1 Concurrency and Parallelism,LEWG Library Evolution
P3149R2 async_scope -- Creating scopes for non-sequential concurrency Ian Petersen 2024-03-20 2024-04 P3149R1 LEWG Library Evolution
P3159R0 C++ Range Adaptors and Parallel Algorithms Bryce Adelstein Lelbach 2024-03-17 2024-04   SG1 Concurrency and Parallelism,LEWG Library Evolution
P3160R1 An allocator-aware `inplace_vector` Pablo Halpern 2024-03-08 2024-04 P3160R0 LEWG Library Evolution
P3161R0 Unified integer overflow arithmetic Tiago Freire 2024-02-17 2024-04   SG6 Numerics
P3161R1 Unified integer overflow arithmetic Tiago Freire 2024-03-13 2024-04 P3161R0 SG6 Numerics
P3162R0 LEWG [[nodiscard]] policy Darius Neațu 2024-02-22 2024-04   LEWG Library Evolution
P3164R0 Improving diagnostics for sender expressions Eric Niebler 2024-02-29 2024-04   LEWG Library Evolution
P3165R0 Contracts on virtual functions for the Contracts MVP Ville Voutilainen 2024-02-26 2024-04   SG21 Contracts
P3166R0 Static Exception Specifications Lewis Baker 2024-03-16 2024-04   EWGI SG17: EWG Incubator,LEWGI SG18: LEWG Incubator
P3167R0 Attributes for the result name in a postcondition assertion Tom Honermann 2024-02-28 2024-04   SG21 Contracts
P3168R0 Give std::optional Range Support David Sankel 2024-02-28 2024-04   LEWG Library Evolution
P3168R1 Give std::optional Range Support David Sankel 2024-04-11 2024-04 P3168R0 LEWG Library Evolution
P3169R0 Inherited contracts Jonas Persson 2024-04-13 2024-04   SG21 Contracts
P3170R0 sinkable exception error message Jarrad J Waterloo 2024-02-29 2024-04   LEWG Library Evolution
P3171R0 Adding functionality to placeholder types Barry Revzin 2024-03-04 2024-04   LEWG Library Evolution
P3172R0 Using `this` in constructor preconditions Andrzej Krzemieński 2024-03-08 2024-04   SG21 Contracts
P3173R0 P2900R6 may be minimimal, but it is not viable Gabriel Dos Reis 2024-03-15 2024-04   EWG Evolution
P3174R0 SG16: Unicode meeting summaries 2023-10-11 through 2024-02-21 Tom Honermann 2024-03-09 2024-04   SG16 Unicode
P3175R0 Reconsidering the `std::execution::on` algorithm Eric Niebler 2024-03-14 2024-04   LEWG Library Evolution
P3176R0 The Oxford variadic comma Jan Schultke 2024-03-07 2024-04   EWGI SG17: EWG Incubator
P3177R0 const prvalues in the conditional operator Barry Revzin 2024-03-17 2024-04   EWG Evolution
P3179R0 C++ parallel range algorithms Ruslan Arutyunyan 2024-03-14 2024-04   SG1 Concurrency and Parallelism,SG9 Ranges
P3180R0 C++ Standard Library Ready Issues to be moved in Tokyo, Mar. 2024 Jonathan Wakely 2024-03-15 2024-04   All of WG21
P3181R0 Atomic stores and object lifetimes Hans Boehm 2024-04-15 2024-04   SG1 Concurrency and Parallelism
P3182R0 Add pop_value methods to container adaptors Brian Bi 2024-04-16 2024-04   LEWG Library Evolution
P3183R0 Contract testing support Bengt Gustafsson 2024-04-15 2024-04   SG21 Contracts
P3187R1 remove ensure_started and start_detached from P2300 Kirk Shoop 2024-03-20 2024-04 P3187R0 SG1 Concurrency and Parallelism,LEWG Library Evolution
P3187R1 remove ensure_started and start_detached from P2300 Kirk Shoop 2024-03-20 2024-04 P3187R0 SG1 Concurrency and Parallelism,LEWG Library Evolution
P3188R0 Proxy: A Pointer-Semantics-Based Polymorphism Library - Presentation slides for P3086R1 Mingxin Wang 2024-04-16 2024-04   LEWGI SG18: LEWG Incubator
P3189R0 Slides for LEWG presentation of P2900R6: Contracts for C++ Timur Doumler 2024-03-18 2024-04   LEWG Library Evolution
P3190R0 Slides for EWG presentation of D2900R7: Contracts for C++ Timur Doumler 2024-03-19 2024-04   EWG Evolution
P3191R0 Feedback on the scalability of contract violation handlers in P2900 Louis Dionne 2024-03-20 2024-04   SG21 Contracts,EWG Evolution
P3192R0 LEWGI/SG18 Presentation of P3104R1 Bit Permutations Jan Schultke 2024-03-19 2024-04   LEWGI SG18: LEWG Incubator
P3194R0 LEWGI/SG18 Presentation of P3105R1 constexpr std::uncaught_exceptions() Jan Schultke 2024-03-19 2024-04   LEWGI SG18: LEWG Incubator
P3196R0 Core Language Working Group "ready" Issues for the March, 2024 meeting Jens Maurer 2024-03-22 2024-04   CWG Core
P3197R0 A response to the Tokyo EWG polls on the Contracts MVP (P2900R6) Timur Doumler 2024-04-12 2024-04   SG21 Contracts,EWG Evolution
P3198R0 A takeaway from the Tokyo LEWG meeting on Contracts MVP Andrzej Krzemieński 2024-03-29 2024-04   SG21 Contracts
P3199R0 Choices for make_optional and value() Steve Downey 2024-03-22 2024-04   LEWG Library Evolution
P3201R0 LEWG [[nodiscard]] policy Jonathan Wakely 2024-03-21 2024-04   LEWG Library Evolution
P3201R1 LEWG [[nodiscard]] policy Jonathan Wakely 2024-03-21 2024-04 P3201R0 LEWG Library Evolution
P3203R0 Implementation defined coroutine extensions Klemens Morgenstern 2024-03-22 2024-04   EWGI SG17: EWG Incubator
P3205R0 Throwing from a `noexcept` function should be a contract violation. Gašper Ažman 2024-04-15 2024-04   SG21 Contracts,EWG Evolution,LEWG Library Evolution
P3207R0 More & like Jarrad J Waterloo 2024-03-24 2024-04   LEWG Library Evolution
P3208R0 import std; and stream macros Sunghyun Min 2024-04-16 2024-04   EWGI SG17: EWG Incubator,LEWGI SG18: LEWG Incubator
P3210R0 A Postcondition *is* a Pattern Match Andrew Tomazos 2024-03-28 2024-04   SG21 Contracts,EWG Evolution
P3211R0 views::transform_join Hewill Kang 2024-04-07 2024-04   SG9 Ranges,LEWG Library Evolution,LWG Library,Direction Group
P3213R0 2024-04 Library Evolution Polls Inbal Levi 2024-04-16 2024-04   LEWG Library Evolution
P3215R0 Slides: Thread Attributes as Designators (P3072R2 presentation) Zhihao Yuan 2024-03-29 2024-04   LEWG Library Evolution
P3216R0 views::slice Hewill Kang 2024-04-07 2024-04   SG9 Ranges,LEWG Library Evolution,LWG Library,Direction Group
P3217R0 Adjoints to "Enabling list-initialization for algorithms": find_last Giuseppe D'Angelo 2024-03-31 2024-04   LEWG Library Evolution,LWG Library
P3218R0 const references to constexpr variables Jarrad J Waterloo 2024-04-09 2024-04   EWG Evolution,CWG Core
P3220R0 views::delimit Hewill Kang 2024-04-16 2024-04   SG9 Ranges,LEWG Library Evolution,LWG Library,Direction Group
P3221R0 Disable pointers to contracted functions Jonas Persson 2024-04-15 2024-04   SG21 Contracts
P3222R0 Fix C++26 by adding transposed special cases for P2642 layouts Mark Hoemmen 2024-04-08 2024-04   LEWG Library Evolution
P3223R0 Making std::basic_istream::ignore less surprising Jonathan Wakely 2024-04-12 2024-04   LEWG Library Evolution
P3224R0 Slides for P3087 - Make direct-initialization for enumeration types at least as permissive as direct Jan Schultke 2024-04-04 2024-04   EWGI SG17: EWG Incubator
P3225R0 Slides for P3140 std::int_least128_t Jan Schultke 2024-04-04 2024-04   EWGI SG17: EWG Incubator,LEWGI SG18: LEWG Incubator
P3226R0 Contracts for C++: Naming the "Louis semantic" Timur Doumler 2024-04-12 2024-04   SG21 Contracts
P3228R0 Contracts for C++: Revisiting contract check elision and duplication Timur Doumler 2024-04-16 2024-04   SG21 Contracts

Results summary: 2024 Annual C++ Developer Survey "Lite"

Over the past week, we ran our 2024 annual global C++ developer surveyThank you to everyone who responded. As promised, here is a summary of the results:

CppDevSurvey-2024-summary.pdf

The results have now been forwarded to the C++ standards committee to help inform C++ evolution. Your feedback will be very helpful, and thank you again for your participation! Stay safe, everyone.

Update to add note: We discovered after the survey went live that SurveyMonkey has started rejecting responses from some countries. They did not notify us this was going to happen, and it means we don't have responses this year from countries that were included in all previous years. We'll look into fixing that for next year because we do want to hear from all C++ programmers worldwide.

Survey closing soon: 2024 Annual C++ Developer Survey "Lite"

cpp_logo.png

Last week, the annual global C++ developer survey opened. If you haven't already, please take 10 minutes or so to participate!

2024 Annual C++ Developer Survey "Lite"

A summary of the results, including aggregated highlights of common answers in the write-in responses, will be posted publicly here on isocpp.org and shared with the C++ standardization committee participants to help inform C++ evolution.

The survey closes on Wednesday.

Thank you for participating and helping to inform our committee and community!