› N5057
2027-03 Istanbul meeting information
M. Çağrı
2026-08-24
2026-09
› N5058
WG21 agenda: 16-21 November 2026, Buzios, Brazil
N. Ranns
2026-09-17
2026-09
› N5060
Sofia meeting announcement
V. Pashov , V. Vassilev , M. Traykova , V. Keremidchiev
2026-09-22
2026-09
› P0260R21
C++ Concurrent Queues
D. Vollmann , L. Crowl , C. Mysen , G. Nishanov
2026-08-18
2026-09
Doc Date
2026-08-18
Abstract
Concurrent queues are a fundamental structuring tool for concurrent programs. We propose concurrent queue concepts and a concrete implementation.
› P2034R9
Partially Mutable Lambda Captures
R. McDougall , L. Garg
2026-09-21
2026-09
Doc Date
2026-09-21
Abstract
`const` and `mutable` extend cleanly to lambda captures. The design is easy to implement, follows the language’s direction, and matches the common model of a lambda as shorthand for an object of a callable struct:
› P2561R3
A control flow operator
B. Revzin
2026-09-12
2026-09
Doc Date
2026-09-12
Abstract
Let’s start with a fairly small example of a series of functions that can generate errors, but don’t themselves handle them - they just need to propagate them up. With exceptions, this might look like:
› P2688R6
Pattern Matching with `match` and `case`
M. Park
2026-09-22
2026-09
Doc Date
2026-09-22
Abstract
This paper proposes pattern matching for C++29. It is the next revision of [[P2688R5]](https://wg21.link/p2688r5), which was considered for C++26 at the February 2025 Hagenberg meeting but did not reach consensus for forwarding to CWG.
› P2719R8
Type-aware allocation and deallocation functions
L. Dionne , O. Hunt , V. Serebrennikov
2026-09-15
2026-09
Doc Date
2026-09-15
Abstract
C++ currently provides two ways of customizing the creation of objects in new expressions. First, `operator new` can be provided as a static member function of a class, like `void* T::operator new`. If such a declaration is provided, an expression like `new T(...)` will use that allocation function. Otherwise, the global version of `operator new` can be replaced by users in a type-agnostic way, by
› P2728R15
Unicode in the Library, Part 1: UTF Transcoding
E. Nolan
2026-09-22
2026-09
› P2952R3
Deduced return types for defaulted operator functions
A. O'Dwyer , M. Taylor
2026-09-17
2026-09
Doc Date
2026-09-17
Abstract
Current C++ forbids explicitly defaulted functions to have placeholder return types such as `auto&`, except for C++20’s `operator<=>`. We remove this syntactic restriction in cases where the deduced return type would be the same as the expected one. This allows more consistency and less repetition when declaring defaulted functions.
› P3211R3
views::transform_join
H. Kang
2026-09-09
2026-09
Doc Date
2026-09-09
Abstract
We propose `views::transform_join`, a range adaptor that applies a function returning a range for each element, then flattens the result. This pattern, commonly known as *flat mapping*, is widespread in functional programming and data processing. Providing it as a dedicated view improves readability and expressiveness, and also opens opportunities for optimization in lazy evaluation contexts.
› P3255R3
Expose whether atomic notifying operations are lock-free
B. Bi
2026-09-03
2026-09
Doc Date
2026-09-03
Abstract
The atomic notifying functions for `std::atomic_flag` are not always lock-free even though `std::atomic_flag` is specified to always be lock-free. Therefore, use of `std::atomic_flag::notify_one` or `std::atomic_flag::notify_all` may cause unpredictable behavior when called in a signal handler, even though the Standard currently claims that these functions are signal-safe. It would be useful for s
› P3256R0
Formatting what matters
V. Zverovich
2026-09-18
2026-09
Doc Date
2026-09-18
Abstract
This paper proposes making `std::exception` and publicly derived exception types formattable with `std::format` and printable with `std::print`. It also specifies the encoding of library-generated parts of standard exception messages, resolving [LWG4087].
› P3427R9
Hazard Pointer Synchronous Reclamation
M. Michael , M. Wong , P. McKenney , M. Wever
2026-09-04
2026-09
Doc Date
2026-09-04
Abstract
This paper proposes extending the C++26 hazard pointer interface to support synchronous reclamation. This revision, P3427R9, revises R8 by following LWG 2026-08-21 feedback. R9 was reviewed by LWG on 2026-09-04 and voted for inclusion in C++29.
› P3606R2
On Overload Resolution, Exact Matches and Clever Implementations
C. Jabot , Y. Zhang
2026-09-21
2026-09
Doc Date
2026-09-21
Abstract
During overload resolution, if GCC finds an exact, non-ambiguous, non-template match, it will pick that overload and will not perform template argument deduction.
› P3642R7
Carry-less product: std::clmul
J. Schultke
2026-09-21
2026-09
Doc Date
2026-09-21
Abstract
Add widening and non-widening carry-less multiplication functions.
› P3643R3
std::to_signed and std::to_unsigned
J. Schultke
2026-08-23
2026-09
Doc Date
2026-08-23
Abstract
Add `std::to_signed` and `std::to_unsigned` function templates in the style of `std::to_underlying`.
› P3688R7
ASCII character utilities
J. Schultke , C. Jabot
2026-08-23
2026-09
Doc Date
2026-08-23
Abstract
The utilities in `<cctype>` or `<locale>` are locale-specific, not `constexpr`, and provide no support for Unicode character types. We propose lightweight, locale-independent alternatives.
› P3876R3
Extending <charconv> support to more character types
J. Schultke , P. Bindels
2026-08-31
2026-09
Doc Date
2026-08-31
Abstract
`std::to_chars` and `std::from_chars` currently only provide support for `char`, which causes several usability problems. This paper proposes to extend support to all other character types, with essentially the same behavior.
› P3928R2
static_sized_range
H. Kang
2026-08-26
2026-09
Doc Date
2026-08-26
Abstract
This paper introduces `static_sized_range`, a refinement of `sized_range` for ranges whose sizes are known at compile time.
› P3951R2
String Interpolation Objects
B. Revzin
2026-09-12
2026-09
Doc Date
2026-09-12
Abstract
The `std::format` approach to formatting offers many significant benefits over the prior `<iostream>`s approach that need not be revisited here. However, `<iostream>` does still have one significant advantage: ordering. It is easy to see at a glance with a long `std::cout` statement which pieces are to be formatted in which order. With `std::format`, as the amount of replacement fields increases,
› P3955R2
It's Scopes All the Way Down
R. Leahy
2026-09-21
2026-09
Doc Date
2026-09-21
Abstract
This paper lays out an approach to achieving the same effect as regular, synchronous scopes in the asynchronous domain (i.e. `std::execution` [1]), including asynchronous construction and destruction of objects.
› P4040R2
Case ranges
J. Schultke
2026-09-21
2026-09
Doc Date
2026-09-21
Abstract
C2y added ranges in `case` labels, such as `case 0 ... 9:`. Such case ranges have also been supported as a C++ compiler extension for many years. This feature should be standardized for C++.
› P4168R1
Fix defects in floating-point std::from_chars (LWG3081, LWG3082, LWG3456)
J. Schultke
2026-09-21
2026-09
Doc Date
2026-09-21
Abstract
This paper supersedes [[P2827R1]](https://wg21%2elink/p2827r1) and fixes [[LWG3081]](https://wg21%2elink/LWG3081), [[LWG3082]](https://wg21%2elink/LWG3082), and [[LWG3456]](https://wg21%2elink/LWG3456). It is intended as a defect report for C++17. The handling of floating-point overflow and underflow in `std::from_chars` is inconsistent; the implementations diverge from each other, and every imple
› P4191R1
is_nothrow_connectable_in
R. Leahy
2026-09-09
2026-09
Doc Date
2026-09-09
Abstract
This paper proposes adding two type traits to the `std::execution` namespace which allow the determination of whether `std::execution::connect` throws for a certain sender in a certain environment.
› P4195R0
WG21 Game Theory: The Culture That Emerges From SD-4
V. Falco , M. Gill
2026-09-22
2026-09
Intent
Inform
Doc Date
2026-09-22
Abstract
WG21's consensus process selects for survivability through the committee's represented veto structure. It cannot certify technical quality or user welfare. The distinction is testable: Post-adoption correction rates for large contested features, compared against a baseline, would reveal whether the system's selection correlates with quality or substitutes for it. That measurement is future work. T
› P4230R1
Implementability of P0943's C++ stdatomic.h
H. Boehm
2026-08-15
2026-09
Doc Date
2026-08-15
Abstract
[P0943](http://wg21.link/p0943) was accepted into C++23. One of the national body comments for C++26 proposed its removal. SG1 voted without objection to retain it. LEWG almost obtained consensus to remove it. This is an attempt to outline the issues, as mostly exposed in the LEWG discussion, a later reflector discussion (“stdatomic.h in C++”, starting March 27, 2026), and some [discussion on a](h
› P4235R0
Removing Digraphs
M. Wippich
2026-09-22
2026-09
Doc Date
2026-09-22
Abstract
Digraphs are a complicated solution to a very old problem, which cause more problems than they solve in a modern environment. Digraphs also severely limit the design space of C++, although as we have seen with [[P2996]](https://www%2eopen-std%2eorg/jtc1/sc22/wg21/docs/papers/2025/p2996r13%2ehtml) we are already fine with special-casing our way out of this pickle.
› P4238R1
Returning C++26 for the Evaluation It Skipped
V. Falco , V. Voutilainen , J. Sánchez , J. Spicer
2026-09-22
2026-09
Intent
Inform
Doc Date
2026-09-22
Abstract
Contracts entered C++26 through procedural moves that broke no rule yet left no record of having reconciled the sustained technical opposition to the design.
› P4267R0
Formatting Enums, Upon Reflection
V. Zverovich
2026-08-20
2026-09
Doc Date
2026-08-20
Abstract
Formatting an enumeration as its underlying type currently requires either a formatter specialization or an explicit conversion at every call site. [P3070] proposed `format_as`, an ADL-based customization point that makes this more convenient and allows the conversion to be performed before type erasure.
› P4269R1
when_all Oughtn't Hallucinate set_stopped
R. Leahy
2026-08-30
2026-09
Doc Date
2026-08-30
Abstract
This paper proposes that `std::execution::when_all` not use a `std::inplace_stop_source` when it can be statically determined such a stop source would never be used.
› P4272R0
Addressed but Unresolved: P3846R1's Eighteen Responses on C++26 Contract Assertions
V. Falco
2026-09-22
2026-09
Intent
Inform
Doc Date
2026-09-22
Abstract
Sixteen of the eighteen objections to C++26 contract assertions were never settled. None was closed by a draft change the objector accepted, by an explanation whose evidence supported its conclusion, or by a recorded decision with stated reasons, and no attempt to settle them is visible on the public record either.
› P4276R1
A Policy for Scalar Overloads in std::simd
D. Towner
2026-09-02
2026-09
Doc Date
2026-09-02
Abstract
`std::simd` includes scalar overloads for a few operations, but a proposal should not be expected to provide them simply because other recent papers have. A scalar supplied where a vector is expected is already broadcast to a vector by the converting constructor. An explicit scalar overload is therefore only useful when it offers a concrete semantic or implementation benefit that the broadcast can
› P4288R2
Stop the Decay
R. Leahy
2026-09-20
2026-09
Doc Date
2026-09-20
Abstract
This paper proposes that `std::execution` algorithms pass through by-reference result datums from child operations rather than uniformly decay-copying them. To aid in the accomplishment thereof it also proposes class templates which abstract the necessary completion storage and completion signature transformation. This paper does not propose changing how `std::execution` algorithms store the argum
› P4302R2
Any Delegate May Object to a Poll on an Unmailed Revision
V. Falco , M. Gill
2026-09-22
2026-09
Intent
Ask
Doc Date
2026-09-22
Abstract
WG21 sometimes records polls on paper revisions that did not appear in a pre-meeting mailing. When an in-meeting revision changes the design, recording the poll can shift the burden of achieving consensus from the author to the stakeholders before national body experts have seen the change. This paper proposes that, before such a poll is recorded, the chair ask whether anyone objects and that one
› P4307R0
An Infix Operator and a Keyword Escape for C++
S. Downey
2026-09-22
2026-09
Doc Date
2026-09-22
Abstract
We propose two uses for one character: the backtick, the last printable ASCII character the language can still usefully claim. One makes any callable a binary operator; the other lets a keyword be escaped for use as an ordinary identifier. Each is independently motivated, and each is defined by rewrite into something the language already has. They are proposed together, with equal standing, becaus
› P4320R1
std::execution::sequence
R. Leahy
2026-09-21
2026-09
Doc Date
2026-09-21
Abstract
`sequence` adapts any number of input senders into a sender which completes when all input senders have completed, with each input sender’s asynchronous operation being started only after the completion of the preceding input sender’s asynchronous operation.
› P4333R0
Asynchronous main
I. Petersen , J. Wong , R. Leahy
2026-09-22
2026-09
Doc Date
2026-09-22
Abstract
This paper proposes that `main` should have an alternate, sender factory form.
› P4335R0
2026-09 Library Evolution Polls
I. Levi , F. Fracassi , A. Weis , C. Jabot
2026-09-21
2026-09
Doc Date
2026-09-21
Abstract
This paper contains the decision polls that the C++ Library Evolution group will take in September 2026.
› P4341R0
Another take on non-transient constexpr allocation
B. Revzin
2026-09-10
2026-09
Doc Date
2026-09-10
Abstract
This papers proposes a new approach to solving the problem of non-transient constexpr allocation. The result is variables of types like `std::vector<T>` and `std::string` are able persist as `constexpr` variables and, with [[P4340R0] (Extending constant template parameter support by customizing std::meta::reflect_constant)](https://wg21.link/p4340r0), be usable as constant template parameters.
› P4343R1
Adding clear() to Container Adaptors
S. Avasthi
2026-09-10
2026-09
Doc Date
2026-09-10
Abstract
This paper proposes adding a <ins>clear()</ins> member function to the standard container adaptors (<ins>std::priority_queue, std::queue, and std::stack</ins>). This addition allows developers to empty the contents of an adaptor while preserving the memory capacity of its underlying container, thereby avoiding unnecessary dynamic memory reallocations. To ensure strict backward compatibility with c
› P4345R0
Extending C++ with Unicode Mathematical Operators
S. Downey
2026-09-22
2026-09
Doc Date
2026-09-22
Abstract
We propose that a user be able to declare `operator⊞` and write `a ⊞ b`. That is the whole feature: a frozen set of Unicode symbols that have never had meaning in C++ becomes available as operator tokens, and an operator drawn from that set is an ordinary overloadable function, found by ordinary lookup, called by ordinary overload resolution.
› P4346R0
Make `movable-box` `movable_box`
S. Downey
2026-09-22
2026-09
Doc Date
2026-09-22
Abstract
The exposition-only class template *movable-box* is the workhorse of the range adaptors. It is how the standard library stores a predicate, a projection, or a value inside a view type and still satisfies the assignability the `view` concept demands. Every implementation ships one. Every ranges-adjacent library reimplements one. Anyone writing a conforming view outside the standard library must wri
› P4349R0
Hardened preconditions for indirect and polymorphic
T. Brindle , J. Coe , A. Peacock
2026-08-21
2026-09
Doc Date
2026-08-21
Abstract
C++26 introduced two new “vocabulary types for composite class design”, `std::indirect` and `std::polymorphic`, via [[P3019R14]](https://wg21.link/p3019r14).
› P4350R0
Presentation "Concepts for C++ Concurrent Queues"
D. Vollmann
2026-08-18
2026-09
› P4353R0
Partially Mutable Lambda Captures
R. McDougall , L. Garg
2026-08-19
2026-09
Doc Date
2026-08-19
Abstract
At a high level: we have found that it is simple and straightforward to extend both `const` and `mutable` keywords to lambda syntax in a way that closely mirrors most users’ mental model of lambda as “a means of getting an object of a callable struct”, that is easy to implement, and is in line with the ongoing evolution of the language:
› P4354R0
No More transform_sender Workarounds
R. Leahy
2026-09-01
2026-09
Doc Date
2026-09-01
Abstract
This paper proposes wording-only changes to simplify the specification of `let_value`, `let_error`, and `let_stopped`, along with future, proposed asynchronous algorithms.
› P4355R0
Floating-point std::saturating_cast
J. Schultke , M. Borland
2026-08-30
2026-09
Doc Date
2026-08-30
Abstract
`std::saturating_cast` should accept floating-point operands.
› P4357R0
Reflections on Completion Signatures
R. Leahy
2026-09-09
2026-09
Doc Date
2026-09-09
Abstract
This paper proposes changes and additions to better integrate `std::meta::info` into the calculation of completion signatures in `std::execution`.
› P4358R0
Pointer tagging for custom pointer types
C. Jabot
2026-09-21
2026-09
Doc Date
2026-09-21
Abstract
This paper proposes support for pointer-like types in `pointer_tag_pair`.
› P4363R0
C++ Contracts compile-time evaluation semantic: static
J. Grant
2026-09-10
2026-09
Doc Date
2026-09-10
Abstract
This paper introduces an additional evaluation semantic for C++ Contracts: **"**`static`**".** This is an additional semantic which sits along side the existing: ignore, observe, enforce, quick-enforce evaluation semantics.
› P4364R0
Emitting messages at compile time with std::format
B. Revzin
2026-09-10
2026-09
Doc Date
2026-09-10
Abstract
[[P2758R5] (Emitting messages at compile time)](https://wg21.link/p2758r5) is still working its way through the committee, but in the meantime [[P3391R2] (constexpr std::format)](https://wg21.link/p3391r2) has been adopted for C++26. Which means that the former paper can continue to just provide the lower level interface that accepts `std::string_view` while this paper can provide the more complex
› P4373R0
Why Did You Stop?
R. Leahy
2026-09-10
2026-09
Doc Date
2026-09-10
Abstract
This paper proposes that, in certain cases, consumers be able to determine that asynchronous operations only send `std::execution::set_stopped_t()` when requested.
› P4374R0
Non-Intrusive Interfaces for C++
T. Payne
2026-09-10
2026-09
Doc Date
2026-09-10
Abstract
C++26 Reflection makes it possible for library code to inspect and use compile-time information about concrete types. This enables a different approach to dynamic polymorphism in which the relationship between an interface and a concrete type can be established without requiring the concrete type to participate in an inheritance hierarchy.
› P4376R0
Do not require module implementation units to import primray module interface implicitly
C. Xu
2026-09-10
2026-09
Doc Date
2026-09-10
Abstract
The other practices shows that this is a real need to fix real problems.
› P4378R0
Align exact-width integer types with C
M. Çağrı
2026-09-22
2026-09
Doc Date
2026-09-22
Abstract
C23 requires the exact-width typedef names for every width for which an implementation provides a standard or extended integer type with no padding bits. C++ retains this requirement only for widths 8, 16, 32, and 64. This paper aligns C++ with C23.
› P4380R0
Token Sequence Injection
B. Revzin , D. Vandevoorde , A. Alexandrescu
2026-09-22
2026-09
Doc Date
2026-09-22
Abstract
This is a follow-up to [[P3294R2] (Code Injection with Token Sequences)](https://wg21.link/p3294r2). In that paper, we argued that the right model for code generation in C++ is through token sequences by comparing to other potential models. In short, we believe that code generation in C++ must be C++-shaped, must be able to generate all of C++, and must allow for the full use of C++ in that genera
› P4381R0
Chairing SG21 and then objecting to Contracts
J. Spicer
2026-09-19
2026-09
Doc Date
2026-09-19
Abstract
People have asked how I could chair SG21 and still object to the product that came out of it.
› P4444R0
std::big_int
J. Schultke , M. Borland , C. Kormanyos
2026-09-22
2026-09
Doc Date
2026-09-22
Abstract
We propose an infinite-precision integer in the form of a class template, with elastic operations.