Standardization

Contracts for C++ explained in 5 minutes -- Timur Doumler

In this article, we briefly explain everything you need to know to get started with Contracts as proposed for C++26 in P2900.

Contracts for C++ explained in 5 minutes

by Timur Doumler

From the article:

With P2900, we propose to add contract assertions to the C++ language. This proposal is in the final stages of wording review before being included in the draft Standard for C++26.

It has been suggested by some members of the C++ standard committee that this feature is too large, too complicated, and hard to teach. As it turns out, the opposite is true: contract assertions are actually very simple and can be explained in just five minutes. In this blog post, we will do exactly this!

2025-01 Mailing Available

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

 

WG21 Number Title Author Document Date Mailing Date Previous Version Subgroup
P0149R1 Generalised member pointers Jeff Snyder 2025-01-13 2025-01 P0149R0 EWG Evolution
P0260R14 C++ Concurrent Queues Detlef Vollmann 2025-01-12 2025-01 P0260R13 SG1 Concurrency and Parallelism,LEWG Library Evolution
P0876R19 fiber_context - fibers without scheduler Oliver Kowalke 2025-01-13 2025-01 P0876R18 EWG Evolution,CWG Core,LWG Library
P1030R8 std::filesystem::path_view Niall Douglas 2024-12-21 2025-01 P1030R7 LEWG Library Evolution
P1839R7 Accessing object representations Brian Bi 2025-01-11 2025-01 P1839R6 CWG Core
P2079R6 System execution context Lucian Radu Teodorescu 2025-01-13 2025-01 P2079R5 SG1 Concurrency and Parallelism,LEWG Library Evolution
P2414R5 Pointer lifetime-end zap proposed solutions Paul E. McKenney 2025-01-11 2025-01 P2414R4 SG1 Concurrency and Parallelism,LEWG Library Evolution,LWG Library
P2434R3 Nondeterministic pointer provenance S. Davis Herring 2025-01-13 2025-01 P2434R2 SG22 Compatibility,EWG Evolution,CWG Core
P2654R1 Modules and Macros Alisdair Meredith 2025-01-13 2025-01 P2654R0 EWG Evolution,LEWG Library Evolution
P2663R6 Proposal to support interleaved complex values in std::simd Daniel Towner 2025-01-13 2025-01 P2663R5 LEWG Library Evolution
P2664R9 Proposal to extend std::simd with permutation API Daniel Towner 2025-01-13 2025-01 P2664R8 SG1 Concurrency and Parallelism,LEWG Library Evolution
P2688R5 Pattern Matching: `match` Expression Michael Park 2025-01-13 2025-01 P2688R4 EWG Evolution
P2719R2 Type-aware allocation and deallocation functions Louis Dionne 2025-01-06 2025-01 P2719R1 EWG Evolution,CWG Core
P2719R3 Type-aware allocation and deallocation functions Louis Dionne 2025-01-08 2025-01 P2719R2 EWG Evolution,CWG Core
P2746R7 Deprecate and Replace Fenv Rounding Modes Hans Boehm 2025-01-12 2025-01 P2746R6 SG6 Numerics,LEWG Library Evolution
P2758R4 Emitting messages at compile time Barry Revzin 2025-01-07 2025-01 P2758R3 LEWG Library Evolution,CWG Core
P2806R3 do expressions Barry Revzin 2025-01-12 2025-01 P2806R2 EWG Evolution
P2825R4 Overload resolution hook: declcall( unevaluated-call-expression ) Gašper Ažman 2025-01-13 2025-01 P2825R3 EWG Evolution,CWG Core
P2830R8 Standardized Constexpr Type Ordering Gašper Ažman 2025-01-09 2025-01 P2830R7 LWG Library
P2830R9 Standardized Constexpr Type Ordering Gašper Ažman 2025-01-10 2025-01 P2830R8 EWG Evolution,LEWG Library Evolution,CWG Core,LWG Library
P2841R6 Concept and variable-template template-parameters Corentin Jabot 2025-01-13 2025-01 P2841R5 CWG Core
P2843R1 Preprocessing is never undefined Alisdair Meredith 2025-01-13 2025-01 P2843R0 SG22 Compatibility,EWG Evolution
P2883R1 `offsetof` Should Be A Keyword In C++26 Alisdair Meredith 2025-01-10 2025-01 P2883R0 EWGI SG17: EWG Incubator,EWG Evolution
P2899R0 Contracts for C++ - Rationale Timur Doumler 2025-01-13 2025-01   SG21 Contracts,EWG Evolution,LEWG Library Evolution
P2900R13 Contracts for C++ Joshua Berne 2025-01-13 2025-01 P2900R12 CWG Core,LWG Library
P2933R3 std::simd overloads for <bit> header Daniel Towner 2025-01-13 2025-01 P2933R2 LWG Library
P2952R2 auto& operator=(X&&) = default Arthur O'Dwyer 2025-01-08 2025-01 P2952R1 CWG Core
P2953R1 Forbid defaulting operator=(X&&) && Arthur O'Dwyer 2025-01-08 2025-01 P2953R0 EWGI SG17: EWG Incubator
P2971R3 Implication for C++ Walter E Brown 2025-01-12 2025-01 P2971R2 EWG Evolution,LEWG Library Evolution
P2988R9 std::optional<T&> Steve Downey 2025-01-13 2025-01 P2988R8 LEWG Library Evolution,LWG Library
P2996R9 Reflection for C++26 Barry Revzin 2025-01-13 2025-01 P2996R8 EWG Evolution
P3019R12 Vocabulary Types for Composite Class Design Jonathan Coe 2025-01-12 2025-01 P3019R11 LEWG Library Evolution,LWG Library
P3045R5 Quantities and units library Mateusz Pusz 2025-01-13 2025-01 P3045R4 SG6 Numerics,SG16 Unicode,LEWGI SG18: LEWG Incubator,LEWG Library Evolution
P3070R2 Formatting enums Victor Zverovich 2025-01-13 2025-01 P3070R1 LEWG Library Evolution
P3081R1 Core safety profiles for C++26 Herb Sutter 2025-01-06 2025-01 P3081R0 EWG Evolution,LEWG Library Evolution
P3086R3 Proxy: A Pointer-Semantics-Based Polymorphism Library Mingxin Wang 2025-01-13 2025-01 P3086R2 LEWGI SG18: LEWG Incubator,LEWG Library Evolution
P3094R6 std::basic_fixed_string Mateusz Pusz 2025-01-10 2025-01 P3094R5 LEWG Library Evolution
P3111R3 Atomic Reduction Operations Gonzalo Brito Gadeschi 2025-01-13 2025-01 P3111R2 EWG Evolution,LEWG Library Evolution
P3125R3 constexpr pointer tagging Hana Dusíková 2025-01-13 2025-01 P3125R2 LEWG Library Evolution
P3139R1 Pointer cast for unique_ptr Zhihao Yuan 2024-12-27 2025-01 P3139R0 LEWG Library Evolution
P3148R1 Formatting of chrono Time Values Alan Talbot 2025-01-13 2025-01 P3148R0 LEWG Library Evolution
P3164R3 Early Diagnostics for Sender Expressions Eric Niebler 2025-01-09 2025-01 P3164R2 LEWG Library Evolution
P3176R1 The Oxford variadic comma Jan Schultke 2024-12-18 2025-01 P3176R0 CWG Core
P3179R5 C++ parallel range algorithms Ruslan Arutyunyan 2025-01-13 2025-01 P3179R4 LEWG Library Evolution
P3206R0 A sender query for completion behaviour Maikel Nadolski 2025-01-13 2025-01   SG1 Concurrency and Parallelism
P3229R0 Making erroneous behaviour compatible with Contracts Timur Doumler 2025-01-13 2025-01   SG21 Contracts,EWG Evolution,LEWG Library Evolution
P3289R1 Consteval blocks Daveed Vandevoorde 2025-01-12 2025-01 P3289R0 EWG Evolution,CWG Core
P3347R1 Invalid/Prospective Pointer Operations Paul E. McKenney 2025-01-11 2025-01 P3347R0 EWG Evolution
P3348R2 C++26 should refer to C23 not C17 Jonathan Wakely 2025-01-13 2025-01 P3348R1 SG6 Numerics,LEWG Library Evolution
P3351R2 views::scan Yihe Li 2025-01-12 2025-01 P3351R1 SG9 Ranges
P3367R3 constexpr coroutines Hana Dusíková 2025-01-06 2025-01 P3367R2 EWG Evolution,LWG Library
P3373R1 Of Operation States and Their Lifetimes Robert Leahy 2025-01-11 2025-01 P3373R0 LEWG Library Evolution
P3374R1 Adding formatter for fpos Liang Jiaming 2025-01-07 2025-01 P3374R0 LEWGI SG18: LEWG Incubator,LEWG Library Evolution
P3375R2 Reproducible floating-point results Guy Davidson 2025-01-13 2025-01 P3375R1 SG6 Numerics,EWGI SG17: EWG Incubator
P3385R3 Attributes reflection Aurelien Cassagnes 2025-01-06 2025-01 P3385R2 SG7 Reflection
P3388R1 When Do You Know connect Doesn't Throw? Robert Leahy 2025-01-11 2025-01 P3388R0 LEWG Library Evolution
P3394R1 Annotations for Reflection Daveed Vandevoorde 2025-01-12 2025-01 P3394R0 SG7 Reflection,LEWG Library Evolution,CWG Core
P3395R0 Formatting of std::error_code Victor Zverovich 2024-12-22 2025-01   SG16 Unicode
P3400R0 Specifying Contract Assertion Properties with Labels Joshua Berne 2025-01-09 2025-01   SG21 Contracts,All of WG21
P3402R2 A Safety Profile Verifying Initialization Marc-André Laverdière 2025-01-13 2025-01 P3402R1 SG23 Safety and Security
P3407R1 Make idiomatic usage of `offsetof` well-defined Brian Bi 2025-01-11 2025-01 P3407R0 EWG Evolution
P3411R1 `any_view` Hui Xie 2025-01-11 2025-01 P3411R0 SG9 Ranges,LEWG Library Evolution
P3412R1 String interpolation Bengt Gustafsson 2025-01-12 2025-01 P3412R0 EWGI SG17: EWG Incubator,EWG Evolution
P3420R1 Reflection of Templates Andrei Alexandrescu 2025-01-13 2025-01 P3420R0 SG7 Reflection
P3423R1 Extending User-Generated Diagnostic Messages Yihe Li 2025-01-12 2025-01 P3423R0 EWG Evolution
P3425R1 Reducing operation-state sizes for subobject child operations Lewis Baker 2025-01-13 2025-01 P3425R0 LEWG Library Evolution
P3430R2 simd issues: explicit, unsequenced, identity-element position, and members of disabled simd Matthias Kretz 2025-01-13 2025-01 P3430R1 LEWG Library Evolution
P3431R0 Deprecate const-qualifier on begin/end of views Jonathan Müller 2025-01-13 2025-01   SG9 Ranges
P3439R1 Chained comparisons: Safe, correct, efficient Herb Sutter 2025-01-06 2025-01 P3439R0 EWG Evolution
P3475R1 Defang and deprecate memory_order::consume Hans Boehm 2025-01-11 2025-01 P3475R0 SG1 Concurrency and Parallelism,EWG Evolution,LEWG Library Evolution,CWG Core,LWG Library
P3477R2 There are exactly 8 bits in a byte JF Bastien 2025-01-11 2025-01 P3477R1 LEWG Library Evolution,CWG Core
P3480R3 std::simd is a range Matthias Kretz 2025-01-13 2025-01 P3480R2 LEWG Library Evolution
P3481R1 std::execution::bulk() issues Lucian Radu Teodorescu 2025-01-13 2025-01 P3481R0 SG1 Concurrency and Parallelism,LEWG Library Evolution
P3491R1 define_static_{string,object,array} Barry Revzin 2025-01-12 2025-01 P3491R0 EWG Evolution,LEWG Library Evolution
P3496R0 Immediate-Escalating Expressions Barry Revzin 2025-01-05 2025-01   EWG Evolution,LEWG Library Evolution
P3499R0 Exploring strict contract predicates Lisa Lippincott 2025-01-13 2025-01   SG21 Contracts,EWG Evolution
P3500R0 Are Contracts "safe"? Timur Doumler 2025-01-13 2025-01   EWG Evolution
P3501R0 The ad-dressing of cats S. Davis Herring 2025-01-10 2025-01   EWG Evolution,CWG Core,LWG Library
P3506R0 P2900 Is Still not Ready for C++26 Gabriel Dos Reis 2025-01-13 2025-01   EWG Evolution
P3516R0 Uninitialized algorithms for relocation Louis Dionne 2025-01-13 2025-01   LEWG Library Evolution
P3527R1 Pattern Matching: *variant-like* and `std::expected` Michael Park 2025-01-13 2025-01 P3527R0 EWG Evolution,LEWG Library Evolution
P3533R1 constexpr virtual inheritance Hana Dusíková 2025-01-10 2025-01 P3533R0 EWG Evolution
P3534R0 Avoid UB When Compiling Code That Violates Library Specification Alisdair Meredith 2025-01-13 2025-01   LWG Library
P3541R1 Violation handlers vs `noexcept` Andrzej Krzemieński 2025-01-06 2025-01 P3541R0 SG21 Contracts,SG23 Safety and Security,EWG Evolution
P3546R0 Explicit return type deduction for std::numeric_limits and numbers Thomas Mejstrik 2024-12-19 2025-01   LEWGI SG18: LEWG Incubator
P3547R0 Modeling Access Control With Reflection Dan Katz 2025-01-09 2025-01   SG7 Reflection,LEWG Library Evolution
P3548R0 P1030 `std::filesystem::path_view` forward progress options Niall Douglas 2025-01-13 2025-01   LEWG Library Evolution
P3549R0 Diverging expressions Barry Revzin 2025-01-12 2025-01   EWG Evolution
P3550R0 Imports cannot ... Alisdair Meredith 2025-01-13 2025-01   EWGI SG17: EWG Incubator,LEWGI SG18: LEWG Incubator
P3552R0 Add a Coroutine Lazy Type Dietmar Kühl 2025-01-13 2025-01   SG1 Concurrency and Parallelism,LEWG Library Evolution
P3554R0 Non-transient allocation with vector and basic_string Barry Revzin 2025-01-05 2025-01   EWG Evolution
P3555R0 An infinite range concept Jonathan Müller 2025-01-13 2025-01   SG9 Ranges
P3557R0 High-Quality Sender Diagnostics with Constexpr Exceptions Eric Niebler 2025-01-12 2025-01   LEWG Library Evolution
P3558R0 Core Language Contracts By Default Joshua Berne 2025-01-12 2025-01   SG21 Contracts,SG23 Safety and Security
P3559R0 Trivial relocation: One trait or two? Arthur O'Dwyer 2025-01-08 2025-01   LEWG Library Evolution
P3560R0 Error Handling in Reflection Barry Revzin 2025-01-12 2025-01   EWG Evolution,LEWG Library Evolution
P3561R0 Index based coproduct operations on variant, and library wording Esa Pulkkinen 2025-01-13 2025-01   LEWGI SG18: LEWG Incubator
P3564R0 Make the concurrent forward progress guarantee usable in `bulk` Mark Hoemmen 2025-01-12 2025-01   SG1 Concurrency and Parallelism
P3565R0 Virtual floating-point values S. Davis Herring 2025-01-10 2025-01   SG6 Numerics
P3566R0 You shall not pass `char*` - Safety concerns working with unbounded null-terminated strings Marco Foco 2025-01-13 2025-01   SG23 Safety and Security,LEWG Library Evolution,LWG Library,ARG ABI Review Group
P3567R0 `flat_meow` Fixes Hui Xie 2025-01-11 2025-01   LEWG Library Evolution,LWG Library
P3568R0 break label; and continue label; Jan Schultke 2025-01-12 2025-01   EWGI SG17: EWG Incubator,SG22 Compatibility
P3569R0 Split define_aggregate from Reflection Shafik Yaghmour 2025-01-11 2025-01   EWG Evolution
P3572R0 Pattern matching Bjarne Stroustrup 2025-01-12 2025-01   EWG Evolution
P3573R0 Contract concerns Bjarne Stroustrup 2025-01-12 2025-01   SG21 Contracts,EWG Evolution,LEWG Library Evolution
P3574R0 Constexpr Callables Steve Downey 2025-01-13 2025-01   LEWG Library Evolution,LWG Library
P3575R0 SG14: Low Latency/Games/Embedded/Financial Trading virtual Meeting Minutes 2024/11/13 Michael Wong 2025-01-12 2025-01   SG14 Low Latency
P3576R0 SG19: Machine Learning virtual Meeting Minutes to 2024/11/14-2024/12/12 Michael Wong 2025-01-12 2025-01   SG19 Machine Learning
P3577R0 Requiring a non-throwing system-provided (default) contract-violation handler John Lakos 2025-01-12 2025-01   SG21 Contracts,EWG Evolution
P3578R0 Language Safety and Grandma Safety Ryan McDougall 2025-01-13 2025-01   SG21 Contracts,SG23 Safety and Security,EWG Evolution
P3579R0 Fix matching of non-type template parameters when matching template template parameters Matheus Izvekov 2025-01-13 2025-01   CWG Core
P3580R0 The Naming of Things Alan Talbot 2025-01-13 2025-01   EWG Evolution,LEWG Library Evolution
P3581R0 No, inplace_vector shouldn't have an Allocator Nevin Liber 2025-01-13 2025-01   LEWG Library Evolution
P3582R0 Observed a contract violation? Skip subsequent assertions! Andrzej Krzemieński 2025-01-13 2025-01   SG21 Contracts,EWG Evolution
P3583R0 Contracts, Types & Functions Jonas Persson 2025-01-13 2025-01   SG21 Contracts
P3584R0 Enrich Facade Creation Facilities for the Pointer-Semantics-Based Polymorphism Library - Proxy Mingxin Wang 2025-01-13 2025-01   LEWGI SG18: LEWG Incubator,LEWG Library Evolution
P3585R0 allocator_traits::is_internally_relocatable Pablo Halpern 2025-01-13 2025-01   LEWGI SG18: LEWG Incubator,LEWG Library Evolution
P3586R0 The Plethora of Problems With Profiles Corentin Jabot 2025-01-13 2025-01   EWG Evolution
P3587R0 Reconsider reflection access for C++26 Lauri Vasama 2025-01-13 2025-01   SG7 Reflection,EWG Evolution
P3588R0 Allow static data members in local and unnamed classes Brian Bi 2025-01-13 2025-01   EWG Evolution
P3589R0 C++ Profiles: The Framework Gabriel Dos Reis 2025-01-13 2025-01   EWG Evolution
P3590R0 Constexpr Coroutines Burdens Daveed Vandevoorde 2025-01-13 2025-01   EWG Evolution,CWG Core

2024-12 Mailing Available

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

 

WG21 Number Title Author Document Date Mailing Date Previous Version Subgroup
N4977 2025-11 Kona meeting information Herb Sutter 2024-12-16 2024-12   All of WG21
N4995 WG21 agenda: 18-23 November 2024, Wroclaw, Poland John Spicer 2024-10-28 2024-12   All of WG21
N4997 Hagenberg Meeting Invitation and Information Michael Hava 2024-11-19 2024-12   All of WG21
N4998 WG21 2024-11 Wroclaw Admin telecon minutes Nina Ranns 2024-11-20 2024-12   All of WG21
N4999 WG21 agenda: 10-15 February 2025, Hagenberg, Austria John Spicer 2024-12-02 2024-12   All of WG21
N5000 WG21 November 2024 Hybrid meeting Minutes of Meeting Nina Ranns 2024-12-11 2024-12   All of WG21
N5001 Working Draft, Programming Languages -- C++ Thomas Köppe 2024-12-17 2024-12   All of WG21
N5002 Editors' Report, Programming Languages -- C++ Thomas Köppe 2024-12-17 2024-12   All of WG21
N5003 2025 WG21 admin telecon meetings Herb Sutter 2024-12-16 2024-12   All of WG21
P0178R1 Allocators and swap Alisdair Meredith 2024-12-17 2024-12 P0178R0 LWG Library
P0260R12 C++ Concurrent Queues Detlef Vollmann 2024-11-21 2024-12 P0260R11 SG1 Concurrency and Parallelism,LEWG Library Evolution
P0260R13 C++ Concurrent Queues Detlef Vollmann 2024-12-10 2024-12 P0260R12 SG1 Concurrency and Parallelism,LEWG Library Evolution
P0447R27 Introduction of std::hive to the standard library Matt Bentley 2024-12-03 2024-12 P0447R26 SG14 Low Latency,LEWG Library Evolution,LWG Library,All of WG21
P0447R28 Introduction of std::hive to the standard library Matt Bentley 2024-12-16 2024-12 P0447R27 SG14 Low Latency,LEWG Library Evolution,LWG Library,All of WG21
P0472R3 Put std::monostate in <utility> David Sankel 2024-11-18 2024-12 P0472R2 LEWG Library Evolution
P1040R7 std::embed and #depend JeanHeyd Meneide 2024-12-15 2024-12 P1040R6 EWG Evolution
P1061R10 Structured Bindings can introduce a Pack Barry Revzin 2024-11-24 2024-12 P1061R9 CWG Core
P1928R13 std::simd - Merge data-parallel types from the Parallelism TS 2 Matthias Kretz 2024-11-22 2024-12 P1928R12 LWG Library
P1928R14 std::simd - Merge data-parallel types from the Parallelism TS 2 Matthias Kretz 2024-11-22 2024-12 P1928R13 LWG Library
P1928R15 std::simd - Merge data-parallel types from the Parallelism TS 2 Matthias Kretz 2024-11-22 2024-12 P1928R14 LWG Library
P1967R13 #embed - a simple, scannable preprocessor-based resource acquisition method JeanHeyd Meneide 2024-12-15 2024-12 P1967R12 EWG Evolution,CWG Core
P2014R1 Proposed resolution for US061/US062 - aligned allocation of coroutine frames Lewis Baker 2024-10-29 2024-12 P2014R0 CWG Core
P2014R2 Proposed resolution for US061/US062 - aligned allocation of coroutine frames Lewis Baker 2024-10-29 2024-12 P2014R1 CWG Core
P2319R3 Prevent path presentation problems Victor Zverovich 2024-11-18 2024-12 P2319R2 LEWG Library Evolution
P2319R4 Prevent path presentation problems Victor Zverovich 2024-12-07 2024-12 P2319R3 LEWG Library Evolution
P2645R1 path_view: a design that took a wrong turn Victor Zverovich 2024-11-17 2024-12 P2645R0 LEWG Library Evolution
P2645R1 path_view: a design that took a wrong turn Victor Zverovich 2024-11-17 2024-12 P2645R0 LEWG Library Evolution
P2656R4 WITHDRAWN: C++ Ecosystem International Standard René Ferdinand Rivera Morell 2024-12-16 2024-12 P2656R3 All of WG21
P2686R5 constexpr structured bindings and references to constexpr variables Corentin Jabot 2024-11-12 2024-12 P2686R4 CWG Core
P2688R4 Pattern Matching: `match` Expression Michael Park 2024-12-17 2024-12 P2688R3 EWG Evolution
P2717R6 WITHDRAWN: Tool Introspection René Ferdinand Rivera Morell 2024-12-16 2024-12 P2717R5 All of WG21
P2781R5 std::constexpr_wrapper Zach Laine 2024-11-14 2024-12 P2781R4 LEWG Library Evolution
P2786R10 Trivial Relocatability For C++26 Pablo Halpern 2024-11-21 2024-12 P2786R9 LEWG Library Evolution
P2786R11 Trivial Relocatability For C++26 Pablo Halpern 2024-12-17 2024-12 P2786R10 EWG Evolution,LEWG Library Evolution
P2786R9 Trivial Relocatability For C++26 Pablo Halpern 2024-11-15 2024-12 P2786R8 EWG Evolution,LEWG Library Evolution
P2825R3 Overload resolution hook: declcall( unevaluated-call-expression ) Gašper Ažman 2024-12-16 2024-12 P2825R2 EWG Evolution,CWG Core
P2830R5 Standardized Constexpr Type Ordering Gašper Ažman 2024-11-20 2024-12 P2830R4 EWG Evolution,LEWG Library Evolution,CWG Core
P2830R6 Standardized Constexpr Type Ordering Gašper Ažman 2024-11-20 2024-12 P2830R5 EWG Evolution,LEWG Library Evolution,CWG Core
P2830R7 Standardized Constexpr Type Ordering Gašper Ažman 2024-11-21 2024-12 P2830R6 EWG Evolution,LEWG Library Evolution,CWG Core
P2835R7 Expose std::atomic_ref's object address Gonzalo Brito Gadeschi 2024-11-18 2024-12 P2835R6 LWG Library
P2846R5 reserve_hint: Eagerly reserving memory for not-quite-sized lazy ranges Corentin Jabot 2024-11-27 2024-12 P2846R4 LEWG Library Evolution
P2863R8 Review Annex D for C++26 Alisdair Meredith 2024-12-13 2024-12 P2863R7 EWG Evolution,LEWG Library Evolution
P2865R6 Remove Deprecated Array Comparisons from C++26 Alisdair Meredith 2024-11-22 2024-12 P2865R5 CWG Core
P2866R5 Remove Deprecated Volatile Features From C++26 Alisdair Meredith 2024-12-17 2024-12 P2866R4 EWG Evolution,CWG Core,LWG Library
P2897R6 aligned_accessor: An mdspan accessor expressing pointer overalignment Mark Hoemmen 2024-11-18 2024-12 P2897R5 LEWG Library Evolution,LWG Library
P2897R7 aligned_accessor: An mdspan accessor expressing pointer overalignment Mark Hoemmen 2024-11-22 2024-12 P2897R6 LWG Library
P2900R11 Contracts for C++ Joshua Berne 2024-11-19 2024-12 P2900R10 EWG Evolution,LEWG Library Evolution
P2900R12 Contracts for C++ Joshua Berne 2024-12-17 2024-12 P2900R11 CWG Core,LWG Library
P2996R8 Reflection for C++26 Barry Revzin 2024-12-16 2024-12 P2996R7 EWG Evolution
P3008R3 Atomic floating-point min/max Gonzalo Brito Gadeschi 2024-11-18 2024-12 P3008R2 LWG Library
P3016R5 Resolve inconsistencies in begin/end for valarray and braced initializer lists Arthur O'Dwyer 2024-12-16 2024-12 P3016R4 LEWG Library Evolution
P3019R11 Vocabulary Types for Composite Class Design Jonathan Coe 2024-11-23 2024-12 P3019R10 LEWG Library Evolution,LWG Library
P3037R4 constexpr std::shared_ptr Paul Keir 2024-10-21 2024-12 P3037R3 LEWG Library Evolution
P3045R4 Quantities and units library Mateusz Pusz 2024-11-15 2024-12 P3045R3 SG6 Numerics,SG16 Unicode,LEWG Library Evolution
P3050R3 Fix C++26 by optimizing linalg::conjugated for noncomplex value types Mark Hoemmen 2024-10-29 2024-12 P3050R2 LEWG Library Evolution
P3051R3 WITHDRAWN: Structured Response Files René Ferdinand Rivera Morell 2024-12-16 2024-12 P3051R2 All of WG21
P3068R5 Allowing exception throwing in constant-evaluation Hana Dusíková 2024-11-19 2024-12 P3068R4 CWG Core,LWG Library
P3068R6 Allowing exception throwing in constant-evaluation Hana Dusíková 2024-11-19 2024-12 P3068R5 CWG Core,LWG Library
P3074R5 trivial unions (was std::uninitialized<T>) Barry Revzin 2024-12-17 2024-12 P3074R4 EWG Evolution
P3096R4 Function Parameter Reflection in Reflection for C++26 Adam Lach 2024-11-21 2024-12 P3096R3 LEWG Library Evolution
P3096R5 Function Parameter Reflection in Reflection for C++26 Adam Lach 2024-12-14 2024-12 P3096R4 LEWG Library Evolution,LWG Library
P3098R1 Contracts for C++: Postcondition captures Timur Doumler 2024-12-11 2024-12 P3098R0 SG21 Contracts,EWG Evolution
P3111R1 Atomic Reduction Operations Gonzalo Brito Gadeschi 2024-11-18 2024-12 P3111R0 SG1 Concurrency and Parallelism
P3111R2 Atomic Reduction Operations Gonzalo Brito Gadeschi 2024-11-25 2024-12 P3111R1 EWG Evolution,LEWG Library Evolution
P3117R1 Extending Conditionally Borrowed Zach Laine 2024-12-14 2024-12 P3117R0 SG9 Ranges,LEWG Library Evolution
P3125R2 constexpr pointer tagging Hana Dusíková 2024-11-27 2024-12 P3125R1 LEWG Library Evolution
P3136R1 Retiring niebloids Tim Song 2024-11-18 2024-12 P3136R0 LWG Library
P3138R4 views::cache_latest Tim Song 2024-10-23 2024-12 P3138R3 LEWG Library Evolution,LWG Library
P3138R5 views::cache_latest Tim Song 2024-11-18 2024-12 P3138R4 LWG Library
P3146R2 Clarifying std::variant converting construction Giuseppe D'Angelo 2024-11-02 2024-12 P3146R1 LEWG Library Evolution,LWG Library
P3149R7 async_scope -- Creating scopes for non-sequential concurrency Ian Petersen 2024-11-18 2024-12 P3149R6 SG1 Concurrency and Parallelism,LEWG Library Evolution
P3149R8 async_scope -- Creating scopes for non-sequential concurrency Ian Petersen 2024-11-22 2024-12 P3149R7 SG1 Concurrency and Parallelism,LEWG Library Evolution
P3152R1 Add missing constructors and assignment for indirect and polymorphic Jonathan Coe 2024-11-21 2024-12 P3152R0 LEWG Library Evolution
P3179R4 C++ parallel range algorithms Ruslan Arutyunyan 2024-12-10 2024-12 P3179R3 LEWG Library Evolution
P3185R0 A proposed direction for C++ Standard Networking based on IETF TAPS Thomas Rodgers 2024-12-14 2024-12   SG4 Networking
P3204R0 Why Contracts? Joshua Berne 2024-11-07 2024-12   SG21 Contracts,EWG Evolution
P3222R1 Fix C++26 by adding transposed special cases for P2642 layouts Mark Hoemmen 2024-10-29 2024-12 P3222R0 LEWG Library Evolution
P3227R1 Fixing the library API for contract violation handling Gašper Ažman 2024-10-24 2024-12 P3227R0 SG21 Contracts,LEWG Library Evolution
P3230R1 views::unchecked_(take|drop) Hewill Kang 2024-12-01 2024-12 P3230R0 SG9 Ranges,LEWG Library Evolution,LWG Library
P3232R1 User-defined erroneous behaviour Thomas Köppe 2024-12-15 2024-12 P3232R0 SG12 Undefined and Unspecified Behavior,SG23 Safety and Security,EWG Evolution,LEWG Library Evolution
P3237R2 Matrix Representation of Contract Semantics Andrei Zissu 2024-10-23 2024-12 P3237R1 SG21 Contracts
P3247R2 Deprecate the notion of trivial types Jens Maurer 2024-10-28 2024-12 P3247R1 CWG Core,LWG Library
P3261R2 Revisiting `const`-ification in Contract Assertions Joshua Berne 2024-11-25 2024-12 P3261R1 SG21 Contracts,EWG Evolution
P3284R2 `write_env` and `unstoppable` Sender Adaptors Eric Niebler 2024-11-21 2024-12 P3284R1 LEWG Library Evolution
P3287R2 Exploration of namespaces for std::simd Matthias Kretz 2024-11-13 2024-12 P3287R1 LEWG Library Evolution
P3296R3 let_async_scope Anthony Williams 2024-11-19 2024-12 P3296R2 SG1 Concurrency and Parallelism,LEWG Library Evolution
P3299R3 Range constructors for std::simd Daniel Towner 2024-12-17 2024-12 P3299R2 LEWG Library Evolution,LWG Library
P3309R3 constexpr atomic and atomic_ref Hana Dusíková 2024-12-16 2024-12 P3309R2 LWG Library
P3310R5 Solving issues introduced by relaxed template template parameter matching Matheus Izvekov 2024-11-21 2024-12 P3310R4 EWG Evolution,CWG Core
P3319R2 Add an iota object for simd (and more) Matthias Kretz 2024-11-19 2024-12 P3319R1 LEWG Library Evolution
P3323R1 cv-qualified types in atomic and atomic_ref Gonzalo Brito Gadeschi 2024-11-18 2024-12 P3323R0 LWG Library
P3325R4 A Utility for Creating Execution Environments Eric Niebler 2024-11-21 2024-12 P3325R3 LWG Library
P3325R5 A Utility for Creating Execution Environments Eric Niebler 2024-11-22 2024-12 P3325R4 LWG Library
P3329R0 Healing the C++ Filter View Nicolai Josuttis 2024-11-13 2024-12   SG9 Ranges,LEWG Library Evolution,LWG Library
P3335R3 Structured Core Options René Ferdinand Rivera Morell 2024-11-21 2024-12 P3335R2 SG15 Tooling
P3335R4 WITHDRAWN: Structured Core Options René Ferdinand Rivera Morell 2024-12-16 2024-12 P3335R3 All of WG21
P3339R1 WITHDRAWN: C++ Ecosystem IS Open License René Ferdinand Rivera Morell 2024-12-16 2024-12 P3339R0 All of WG21
P3342R1 Working Draft, Standard for C++ Ecosystem René Ferdinand Rivera Morell 2024-11-21 2024-12 P3342R0 EWG Evolution,CWG Core
P3342R2 WITHDRAWN: Working Draft, Standard for C++ Ecosystem René Ferdinand Rivera Morell 2024-12-16 2024-12 P3342R1 All of WG21
P3355R2 Fix submdspan for C++26 Mark Hoemmen 2024-10-29 2024-12 P3355R1 LWG Library
P3367R1 constexpr coroutines Hana Dusíková 2024-11-29 2024-12 P3367R0 CWG Core
P3367R2 constexpr coroutines Hana Dusíková 2024-12-16 2024-12 P3367R1 EWG Evolution,LWG Library
P3371R3 Fix C++26 by making the rank-1, rank-2, rank-k, and rank-2k updates consistent with the BLAS Mark Hoemmen 2024-10-29 2024-12 P3371R2 LEWG Library Evolution
P3378R1 constexpr exception types Hana Dusíková 2024-12-16 2024-12 P3378R0 LEWG Library Evolution
P3380R1 Extending support for class types as non-type template parameters Barry Revzin 2024-12-17 2024-12 P3380R0 EWG Evolution
P3383R1 mdspan.at() Stephan Lachnit 2024-11-23 2024-12 P3383R0 LEWG Library Evolution
P3385R2 Attributes reflection Aurelien Cassagnes 2024-12-11 2024-12 P3385R1 SG7 Reflection
P3386R1 Static Analysis of Contracts with P2900 Joshua Berne 2024-11-25 2024-12 P3386R0 EWG Evolution
P3396R1 std::execution wording fixes Lewis Baker 2024-11-19 2024-12 P3396R0 LWG Library
P3409R1 Enabling more efficient stop-token based cancellation of senders Lewis Baker 2024-11-17 2024-12 P3409R0 SG1 Concurrency and Parallelism
P3422R1 Allow main function in named modules Chuanqi Xu 2024-11-27 2024-12 P3422R0 EWG Evolution
P3424R0 Define Delete With Throwing Exception Specification Alisdair Meredith 2024-12-17 2024-12   LEWGI SG18: LEWG Incubator,EWG Evolution
P3427R1 Hazard Pointer Synchronous Reclamation Maged Michael 2024-12-11 2024-12 P3427R0 SG1 Concurrency and Parallelism
P3428R1 Hazard Pointer Batches Maged Michael 2024-12-11 2024-12 P3428R0 SG1 Concurrency and Parallelism
P3429R1 Reflection header should minimize standard library dependencies Jonathan Müller 2024-11-29 2024-12 P3429R0 LEWG Library Evolution
P3430R1 simd issues: explicit, unsequenced, identity-element position, and members of disabled simd Matthias Kretz 2024-11-22 2024-12 P3430R0 LEWG Library Evolution
P3436R1 Strategy for removing safety-related undefined behavior by default Herb Sutter 2024-11-07 2024-12 P3436R0 SG23 Safety and Security,EWG Evolution
P3437R1 Proposed principles: Reflect C++, generate C++ (by default) Herb Sutter 2024-11-07 2024-12 P3437R0 SG7 Reflection,EWG Evolution
P3449R1 constexpr std::generator Hana Dusíková 2024-12-16 2024-12 P3449R0 LWG Library
P3466R1 (Re)affirm design principles for future C++ evolution Herb Sutter 2024-11-24 2024-12 P3466R0 EWG Evolution
P3468R0 2024-10 Library Evolution Poll Outcomes Inbal Levi 2024-12-16 2024-12   LEWG Library Evolution
P3471R1 Standard Library Hardening Konstantin Varlamov 2024-11-21 2024-12 P3471R0 SG23 Safety and Security,LEWG Library Evolution
P3471R2 Standard Library Hardening Konstantin Varlamov 2024-12-14 2024-12 P3471R1 SG23 Safety and Security,LEWG Library Evolution
P3477R1 There are exactly 8 bits in a byte JF Bastien 2024-11-21 2024-12 P3477R0 SG22 Compatibility,LEWG Library Evolution,CWG Core
P3480R1 std::simd is a range Matthias Kretz 2024-11-13 2024-12 P3480R0 SG9 Ranges,LEWG Library Evolution
P3480R2 std::simd is a range Matthias Kretz 2024-11-22 2024-12 P3480R1 LEWG Library Evolution
P3482R0 Proposed API for creating TAPS based networking connections Thomas W Rodgers 2024-12-14 2024-12   SG4 Networking
P3483R0 Contracts for C++: Pre-Wroclaw technical clarifications Timur Doumler 2024-10-31 2024-12   SG21 Contracts,EWG Evolution
P3483R1 Contracts for C++: Pre-Wroclaw technical clarifications Timur Doumler 2024-11-04 2024-12 P3483R0 SG21 Contracts,EWG Evolution
P3484R0 Postconditions odr-using a parameter modified in an overriding function Timur Doumler 2024-11-01 2024-12   SG21 Contracts,EWG Evolution
P3484R1 Postconditions odr-using a parameter modified in an overriding function Timur Doumler 2024-11-07 2024-12 P3484R0 SG21 Contracts,EWG Evolution
P3484R2 Postconditions odr-using a parameter modified in an overriding function Timur Doumler 2024-11-14 2024-12 P3484R1 SG21 Contracts,EWG Evolution
P3485R0 Grouping using declarations with braces Barry Revzin 2024-10-29 2024-12   EWG Evolution
P3487R0 Postconditions odr-using a parameter that may be passed in registers Timur Doumler 2024-11-07 2024-12   SG21 Contracts,EWG Evolution
P3488R0 Floating-Point Excess Precision Matthias Kretz 2024-11-14 2024-12   SG6 Numerics,EWG Evolution
P3488R1 Floating-Point Excess Precision Matthias Kretz 2024-11-20 2024-12 P3488R0 EWG Evolution
P3489R0 Postconditions odr-using a parameter of dependent type Timur Doumler 2024-11-07 2024-12   SG21 Contracts,EWG Evolution
P3490R0 Justification for ranges as the output of parallel range algorithms Alexey Kukanov 2024-11-14 2024-12   SG1 Concurrency and Parallelism,SG9 Ranges
P3491R0 define_static_{string,object,array} Barry Revzin 2024-12-15 2024-12   LEWG Library Evolution
P3492R0 Sized deallocation for placement new Lauri Vasama 2024-11-22 2024-12   EWGI SG17: EWG Incubator
P3493R0 Ruminations on reflection and access Ville Voutilainen 2024-11-10 2024-12   SG7 Reflection,LEWG Library Evolution
P3495R0 Remarks on Basic Statistics, P1708R9 Oliver Rosten 2024-11-13 2024-12   SG19 Machine Learning,LEWG Library Evolution,LWG Library
P3497R0 Guarded Objects Jan Wilmans 2024-11-11 2024-12   SG1 Concurrency and Parallelism
P3498R0 Stop the Bleeding but, First, Do No Harm Gabriel Dos Reis 2024-11-14 2024-12   SG23 Safety and Security,EWG Evolution
P3502R0 Slides for D2900R11 - Contracts for C++ Timur Doumler 2024-11-18 2024-12   EWG Evolution
P3503R0 Make type-erased allocator use in promise and packaged_task consistent Nicolas Morales 2024-11-21 2024-12   LEWG Library Evolution
P3504R0 C++ Standard Library Ready Issues to be moved in Wroclaw, Nov. 2024 Jonathan Wakely 2024-11-18 2024-12   All of WG21
P3508R0 Wording for constexpr for specialized memory algorithms Giuseppe D'Angelo 2024-11-20 2024-12   LWG Library
P3510R0 Leftover properties of `this` in constructor preconditions Nathan Myers 2024-11-20 2024-12   SG21 Contracts
P3510R1 Leftover properties of `this` in constructor preconditions Nathan Myers 2024-11-21 2024-12 P3510R0 SG21 Contracts
P3510R2 Leftover properties of `this` in constructor preconditions Nathan Myers 2024-12-04 2024-12 P3510R1 SG21 Contracts
P3517R0 Slides presented to LEWG on trivial relocation in Wroclaw Alisdair Meredith 2024-11-20 2024-12   LEWG Library Evolution
P3518R0 Slides for Standardized Constexpr Type Ordering Gašper Ažman 2024-11-20 2024-12   EWG Evolution
P3519R0 Slides for P3425 presentation to LEWG Lewis Baker 2024-11-20 2024-12   LEWG Library Evolution
P3520R0 Wroclaw Technical Fixes to Contracts Timur Doumler 2024-11-21 2024-12   SG21 Contracts,EWG Evolution
P3521R0 Pattern Matching: Customization Point for Open Sum Types Michael Park 2024-12-17 2024-12   EWG Evolution,LEWG Library Evolution
P3524R0 Core Language Working Group "ready" Issues for the November, 2024 meeting Jens Maurer 2024-11-23 2024-12   CWG Core
P3525R0 Explicit Implicit Template Regions Barry Revzin 2024-12-16 2024-12   EWG Evolution
P3527R0 Pattern Matching: *variant-like* and `std::expected` Michael Park 2024-12-17 2024-12   EWG Evolution,LEWG Library Evolution
P3530R0 Intrinsic for reading uninitialized memory Boleyn Su 2024-12-17 2024-12   EWGI SG17: EWG Incubator,EWG Evolution,LEWG Library Evolution,CWG Core,LWG Library

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