› P0085R2
Oo... adding a coherent character sequence to begin octal-literals
Axel Naumann
A. Naumann
,
Jolly Chen
J. Chen
,
Michael Jonker
M. Jonker
2025-06-06
2025-07
› P0870R7
A proposal for a type trait to detect narrowing conversions
Giuseppe D'Angelo
G. D'Angelo
2025-06-17
2025-07
› P2414R9
Pointer lifetime-end zap proposed solutions
Paul E. McKenney
P. McKenney
,
Maged Michael
M. Michael
,
Jens Maurer
J. Maurer
,
Peter Sewell
P. Sewell
,
Martin Uecker
M. Uecker
,
Hans Boehm
H. Boehm
,
Hubert Tong
H. Tong
,
Niall Douglas
N. Douglas
,
Thomas Rodgers
T. Rodgers
,
Will Deacon
W. Deacon
,
Michael Wong
M. Wong
,
David Goldblatt
D. Goldblatt
,
Kostya Serebryany
K. Serebryany
,
Anthony Williams
A. Williams
,
Tom Scogland
T. Scogland
,
JF Bastien
J. Bastien
2025-07-11
2025-07
Doc Date
2025-07-11
Author(s)
Paul E. McKenney , Maged Michael , Jens Maurer , Peter Sewell , Martin Uecker , Hans Boehm , Hubert Tong , Niall Douglas , Thomas Rodgers , Will Deacon , Michael Wong , David Goldblatt , Kostya Serebryany , Anthony Williams , Tom Scogland , JF Bastien
Abstract
**Introduction** **3** **Terminology** **4** **What We Are Asking For** **5** **Detailed Proposal** **5** Atomic Operations Forgive Pointer Invalidity 5 Volatile Accesses Forgive Pointer Invalidity 6 **Examples** **6** LIFO Push With Nondeterministic Pointer Provenance 7 Use Case 1: Invalid Pointer Use 7 Use Case 2: Zombie Pointer Dereference 7 Fixing LIFO Push Using This Proposal 8 **Wording** **
› P2929R1
simd_invoke
Daniel Towner
D. Towner
,
Ruslan Arutyunyan
R. Arutyunyan
2025-06-19
2025-07
Doc Date
2025-06-19
Abstract
Proposal to extend `std::simd` with a method of allowing a lambda to be invoked on smaller pieces of a SIMD value in order to make interaction with intrinsics easier.
› P3045R6
Quantities and units library
Mateusz Pusz
M. Pusz
,
Dominik Berner
D. Berner
,
Johel Ernesto Guerrero Peña
J. Peña
,
Charles Hogg
C. Hogg
,
Nicolas Holthaus
N. Holthaus
,
Roth Michaels
R. Michaels
,
Vincent Reverdy
V. Reverdy
2025-06-19
2025-07
Doc Date
2025-06-19
Abstract
Several groups in the ISO C++ Committee reviewed the “P1935: A C++ Approach to Physical Units” [[P1935R2]](https://wg21.link/p1935r2) proposal in Belfast 2019 and Prague 2020. All those groups expressed interest in the potential standardization of such a library and encouraged further work. The authors also got valuable initial feedback that highly influenced the design of the V2 version of the [[
› P3091R4
Better lookups for `map` , `unordered_map`, and `flat_map`
Pablo Halpern
P. Halpern
2025-06-20
2025-07
Doc Date
2025-06-20
Abstract
The most convenient way to look up an element of a `map`-like container is to use the index operator, i.e., `theMap[key]`. This operator cannot be used, however, when 1) the container is `const`, 2) the mapped type is not default constructible, 3) the default-constructed value is inappropriate for the context, or 4) the container should not be modified. These limitations often force the user to re
› P3096R11
Function Parameter Reflection in Reflection for C++26
Adam Lach
A. Lach
,
Walter Genovese
W. Genovese
2025-06-19
2025-07
Doc Date
2025-06-19
Abstract
Based on a few demonstrative applications, we claim that parameter reflection is an important feature that should be included in the initial specification for Reflection in C++26.
› P3211R1
views::flat_map
Hewill Kang
H. Kang
2025-07-04
2025-07
Doc Date
2025-07-04
Abstract
We propose `views::flat_map`, 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.
› P3216R1
views::slice
Hewill Kang
H. Kang
2025-06-29
2025-07
Doc Date
2025-06-29
Abstract
This paper proposes the Tier 1 adaptor `views::slice` (as described in [P2760](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2760r1.html)) to enhance the C++29 ranges library. Notably, this is the first standard range adaptor that accepts two arguments — `start` and `end` — to specify the interval [`start`, `end`) for slicing a range.
› P3220R1
views::take_before
Hewill Kang
H. Kang
2025-06-23
2025-07
Doc Date
2025-06-23
Abstract
This paper proposes the Tier 1 adaptor in [P2760](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2023/p2760r1.html): `views::delimit`, which is renamed into `views::take_before` along with its corresponding view class to improve the C++29 ranges facilities.
› P3290R3
Integrating Existing Assertions With Contracts
Joshua Berne
J. Berne
,
Timur Doumler
T. Doumler
,
John Lakos
J. Lakos
2025-07-11
2025-07
Doc Date
2025-07-11
Abstract
WG21 has adopted a contract checking facility as specified in [P2900R14]. C++ now includes three forms of contract assertion: `pre`, `post`, and `contract_assert`. Taken as a unit, these three standard names allow users to express, in a consistent syntax, individual, independent contract checks in their software without changing the meaning (i.e., essential behavior) of that software. Pre-existing
› P3411R3
`any_view`
Hui Xie
H. Xie
,
S. Levent Yilmaz
S. Yilmaz
,
Louis Dionne
L. Dionne
,
Patrick Roberts
P. Roberts
2025-06-19
2025-07
Doc Date
2025-06-19
Abstract
This paper proposes a new type-erased view: `std::ranges::any_view`. That type-erased view allows customizing the traversal category of the view, its value type and a few other properties. For example:
› P3440R1
Add n_elements named constructor to std::simd
Daniel Towner
D. Towner
2025-06-13
2025-07
Doc Date
2025-06-13
Abstract
Proposal to add `std::simd_mask::n_elements` named constructor to create a mask containing an exact number of set bits. Such a function is notably useful for handling loop remainders.
› P3481R5
std::execution::bulk() issues
Lucian Radu Teodorescu
L. Teodorescu
,
Ruslan Arutyunyan
R. Arutyunyan
,
Lewis Baker
L. Baker
,
Mark Hoemmen
M. Hoemmen
2025-06-18
2025-07
Doc Date
2025-06-18
Disposition Date
2025-06Adopted
Abstract
This paper explores the issues with `std::execution::bulk` algorithm and proposes a way to address them, making the API better for the users.
› P3566R2
You shall not pass `char*` - Safety concerns working with unbounded null-terminated strings
Marco Foco
M. Foco
,
Joshua Kriegshauser
J. Kriegshauser
,
Alexey Shevlyakov
A. Shevlyakov
,
Giuseppe D'Angelo
G. D'Angelo
2025-06-16
2025-07
Doc Date
2025-06-16
Abstract
`string`s and `string_view`s are often used as a safer alternative to null-terminated strings. Unfortunately they suffer from an implicit assumption at creation/assignment time, and in some of their functions: the presence of a null-terminator in the input sequence. The absence of the null-terminator can currently lead to undefined behavior inside these functions. There are many cases when the len
› P3642R2
Carry-less product: std::clmul
Jan Schultke
J. Schultke
2025-07-02
2025-07
Doc Date
2025-07-02
Abstract
Add widening and non-widening carry-less multiplication functions.
› P3655R2
zstring_view
Peter Bindels
P. Bindels
,
Hana Dusikova
H. Dusikova
,
Jeremy Rifkin
J. Rifkin
,
Marco Foco
M. Foco
,
Alexey Shevlyakov
A. Shevlyakov
2025-06-15
2025-07
Doc Date
2025-06-15
Abstract
We propose a standard string view type that guarantees null-termination.
› P3669R2
Non-Blocking Support for `std::execution`
Detlef Vollmann
D. Vollmann
2025-06-19
2025-07
Doc Date
2025-06-19
Abstract
`std::execution` as currently specified doesn’t provide support for non-blocking operations. This proposal tries to fix this.
› P3687R1
Final Adjustments to C++26 Reflection
Dan Katz
D. Katz
,
Wyatt Childers
W. Childers
,
Daveed Vandevoorde
D. Vandevoorde
,
Ville Voutilainen
V. Voutilainen
2025-06-18
2025-07
Doc Date
2025-06-18
Abstract
We propose two minor design changes to [[P2996R12](https://wg21.link/p2996r12)] to ensure its readiness for C++26 and future-proof the evolution of the feature.
› P3697R1
Minor additions to C++26 standard library hardening
Konstantin Varlamov
K. Varlamov
,
Louis Dionne
L. Dionne
,
Alisdair Meredith
A. Meredith
2025-06-20
2025-07
Doc Date
2025-06-20
Disposition Date
2025-06Adopted
Abstract
This paper is a small follow-up to P3471R4 “Standard Library Hardening” that hardens the preconditions of a few more library functions. All these functions satisfy the same criteria as the ones in the original paper:
› P3699R1
Rename `conqueue_errc`
Detlef Vollmann
D. Vollmann
2025-06-17
2025-07
Doc Date
2025-06-17
Abstract
The proposal for concurrent queues [C++ Concurrent Queues (P0260)](https://wg21.link/P0260) uses an enumeration to specify possible return states of some queue operations. This enumeration is called `conqueue_errc` as it was originally meant for exceptions. However, the concurrent queue proposal doesn’t propose it’s own exception class anymore, so the name is misleading.
› P3705R2
A Sentinel for Null-Terminated Strings
Eddie Nolan
E. Nolan
2025-06-19
2025-07
Doc Date
2025-06-19
Abstract
Consider using `std::views::take` to get the first five characters from a string. If we pass a string literal with five or more characters, it looks okay:
› P3709R2
Reconsider parallel ranges::rotate_copy and ranges::reverse_copy
Ruslan Arutyunyan
R. Arutyunyan
,
Alexey Kukanov
A. Kukanov
2025-06-17
2025-07
Doc Date
2025-06-17
Disposition Date
2025-06Adopted
Abstract
This paper proposes changing the return value type for parallel `ranges::rotate_copy` and `ranges::reverse_copy` in [[P3179R9]](https://isocpp.org/files/papers/P3179R9.html).
› P3711R1
Safer StringViewLike Functions for Replacing char* strings
Marco Foco
M. Foco
,
Alexey Shevlyakov
A. Shevlyakov
,
Joshua Kriegshauser
J. Kriegshauser
2025-06-20
2025-07
Doc Date
2025-06-20
Abstract
This document introduces a set of string utility functions that we used in NVIDIA Omniverse Foundation Library, and were key components to remove `char*` (or more generally `CharT*`) strings usage from our codebase replacing them with the implementation proposed in P3566. All the usages that will still need to use the old-fashioned `char*`s will be marked accordingly to P3566, using the proposed `
› P3718R0
Fixing Lazy Sender Algorithm Customization, Again
Eric Niebler
E. Niebler
2025-06-28
2025-07
Doc Date
2025-06-28
Abstract
1. Add a non-forwarding `get_domain_override` query with no default implementation. 2. Give meaning to the `get_scheduler` query by requiring that an operation be started on an execution agent associated with the scheduler from the environment of the receiver used to create the operation. 3. Tweak the definitions of *`SCHED-ATTRS`* and *`SCHED-ENV`* to avoid forwaring the `get_domain` query. 4. Si
› P3719R0
std::is_vector_bool_reference
Yuxuan Chen
Y. Chen
2025-05-20
2025-07
› P3724R0
Integer division
Jan Schultke
J. Schultke
2025-06-06
2025-07
Doc Date
2025-06-06
Abstract
C++ currently only offers truncating integer division in the form of the `/` operator. I propose standard library functions for computing quotients and remainders with other rounding modes.
› P3725R1
Filter View Extensions for Input Ranges
Nicolai Josuttis
N. Josuttis
2025-06-23
2025-07
Doc Date
2025-06-23
Abstract
Using filter views is both risky and non-intuitive. Let us look at some typical use cases.
› P3729R0
Aligning span and string_view
Michael Florian Hava
M. Hava
2025-06-23
2025-07
Doc Date
2025-06-23
Abstract
This paper proposes extensions to `span` and `string_view`, unifying their syntax for common subsetting and shrinking operations. Additionally it proposes a subset of the aforementioned features for `string` as well in order to enable generic handling of it and `string_view`.
› P3730R0
Slides for P3104R3
Jan Schultke
J. Schultke
2025-06-04
2025-07
› P3737R0
std::array is a wrapper for an array!
Jan Schultke
J. Schultke
2025-06-11
2025-07
Doc Date
2025-06-11
Abstract
The `std::array` class template is implemented as a simple wrapper type for a "C-style array". However, its specification in the standard is considerably more permissive and should be simplified.
› P3738R0
Make std::make_from_tuple SFINAE friendly
Yihan Wang
Y. Wang
2025-06-10
2025-07
Doc Date
2025-06-10
Abstract
This paper introduce constraints for `std``::``make_from_tuple` to make it SFINAE friendly.
› P3740R1
Last chance to fix std::nontype
Jan Schultke
J. Schultke
,
Bronek Kozicki
B. Kozicki
2025-06-20
2025-07
Doc Date
2025-06-20
Abstract
P2472R3 introduced overloads for the `std::function_ref` constructor which utilize a helper type `std::nontype`. This helper type may be obsoleted by other active proposals, and its name has become a bad choice now that C++26 no longer replaced the term "non-type template parameter", with "constant template parameter".
› P3745R0
Rebuttal to P1144R13
Pablo Halpern
P. Halpern
2025-07-03
2025-07
› P3746R0
LEWG Slides for P3637R0 Inherit std::meta::exception from std::exception
Nevin Liber
N. Liber
,
Victor Zverovich
V. Zverovich
,
Michael Hava
M. Hava
2025-06-16
2025-07
› P3748R0
Inspecting exception_ptr works should be constexpr.
Hana Dusíková
H. Dusíková
2025-06-18
2025-07
Doc Date
2025-06-18
Disposition Date
2025-06Adopted
Abstract
Since [P3068r6](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/p3068r6.html) C++ exceptions and most of `exception_ptr` support functions to get `current_exception`, `make_exception_ptr`, and `rethrow_exception` are `constexpr` enabled. But newly added function `exception_ptr_cast` from paper [P2927r3](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2025/p2927r3.html) adopted in Sofi
› P3749R0
Slides in response to P3655R2 - Concerns regarding std::zstring_view
Jan Schultke
J. Schultke
2025-06-27
2025-07
› P3753R1
Slides for P3740R1 - Last chance to fix std::nontype
Jan Schultke
J. Schultke
2025-06-20
2025-07
Doc Date
2025-06-20
Abstract
- P2472R3 added `std::nontype` constructors for `std::function_ref` - merged into P0792R14, plenary-approved Varna 2023 for C++26 - `std::nontype` possibly obsoleted by `std::constant_wrapper` (P2781R9) - Wording review completed by LWG - "non-type template parameter" term was removed by P2841R1 (C++26)
› P3757R0
Remove value-type invocability requirement from indirect unary callable concepts
Hewill Kang
H. Kang
2025-06-22
2025-07
Doc Date
2025-06-22
Abstract
This is the follow up of [P2997](https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/p2997r1.html).
› P3760R0
Presentation: constexpr 'Parallel' Algorithms
Oliver Rosten
O. Rosten
2025-06-21
2025-07
› P3763R0
Remove redundant reserve_hint members from view classes
Hewill Kang
H. Kang
2025-06-21
2025-07
Doc Date
2025-06-21
Abstract
This paper removes the `reserve_hint` members of view classes when their `size` members are already provided.
› P3771R0
constexpr mutex, locks, and condition variable
Hana Dusíková
H. Dusíková
2025-06-30
2025-07
Doc Date
2025-06-30
Abstract
It's really hard to conditionally avoid non-`constexpr` types in a code which is supposed to be `constexpr` compatible. This paper fixes it by making these types (and algorithms) `constexpr` compatible. There is no semantical change for updated types and algorithms.
› P3774R0
Rename std::nontype, and make it broadly useful
Jan Schultke
J. Schultke
,
Bronek Kozicki
B. Kozicki
,
Tomasz Kamiński
T. Kamiński
2025-07-15
2025-07
Doc Date
2025-07-15
Abstract
[[P3740R1]](https://isocpp%2eorg/files/papers/P3740R1%2ehtml) proposed to rename `std::nontype` to `std::constant_arg`, now that the term "non-type template parameter" no longer exists in the C++26 standard. This solution found weak consensus in LEWG, but there was no time in LWG to review the change, so it did not make it into C++26.
› P3778R0
Fixing `type_order` template definition
Gašper Ažman
G. Ažman
2025-07-03
2025-07
Doc Date
2025-07-03
Disposition Date
2025-11Adopted
Abstract
The `type_order` template is unimplementable as specified by [[P2830R10]](https://wg21.link/p2830r10), due to values of type `strong_ordering` not being usable as template parameters because `strong_ordering` is not a structural type (it has a private member).
› P3780R0
Detecting bitwise trivially relocatable types
Giuseppe D'Angelo
G. D'Angelo
2025-07-10
2025-07
Doc Date
2025-07-10
Abstract
We propose a new type trait that detects whether a type can be trivially relocated, and such trivial relocation does not alter any part of the object representation. This trait has direct use cases when creating types that use byte buffers to manage objects, such as certain implementations of `optional`, `inplace_vector`, `any`, `function` and similar.
› P3787R0
Adjoints to "Enabling list-initialization for algorithms": uninitialized_fill
Giuseppe D'Angelo
G. D'Angelo
2025-07-10
2025-07
Doc Date
2025-07-10
Abstract
We extend the same changes that [P2248R8] applied to the rest of the find algorithms to `std(::ranges)::uninitialized_fill`.
› P3788R0
Fixing `std::complex` binary operators
Mateusz Pusz
M. Pusz
2025-07-11
2025-07
Doc Date
2025-07-11
Abstract
This paper proposes a backward-compatible solution to fix the inconsistent behavior of `std::complex` binary operators with implicit conversions. The proposed changes:
› P3790R0
Pointer lifetime-end zap proposed solutions: Bag-of-bits pointer class
Paul E. McKenney
P. McKenney
,
Maged Michael
M. Michael
,
Jens Maurer
J. Maurer
,
Peter Sewell
P. Sewell
,
Hans Boehm
H. Boehm
,
Hubert Tong
H. Tong
,
Niall Douglas
N. Douglas
,
Thomas Rodgers
T. Rodgers
,
Will Deacon
W. Deacon
,
Michael Wong
M. Wong
,
David Goldblatt
D. Goldblatt
,
Kostya Serebryany
K. Serebryany
,
Anthony Williams
A. Williams
,
Tom Scogland
T. Scogland
,
JF Bastien
J. Bastien
,
Daniel Krügler.
D. Krügler.
2025-07-14
2025-07
Doc Date
2025-07-14
Author(s)
Paul E. McKenney , Maged Michael , Jens Maurer , Peter Sewell , Hans Boehm , Hubert Tong , Niall Douglas , Thomas Rodgers , Will Deacon , Michael Wong , David Goldblatt , Kostya Serebryany , Anthony Williams , Tom Scogland , JF Bastien , Daniel Krügler.
Abstract
**Introduction** **3** **Terminology** **4** **What We Are Asking For** **5** **Detailed Proposal** **5** A launder_bag_of_bits_ptr() Function 5 A bag_of_bits_ptr<T> Template Class 6 **Example** **6** User Tracking of Pointers and realloc() 6 **Wording** **8** Add bag_of_bits_ptr<T>, comparisons, launder_bag_of_bits_ptr(), and hash specialization 8 **History** **11** **Appendix: Name-Selection Gui
› P3791R0
constexpr deterministic random
Hana Dusíková
H. Dusíková
2025-07-15
2025-07
Doc Date
2025-07-15
Abstract
Algorithms `shuffle`, `sample` are useful even in compile time, same applies to random distribution types which are fully deterministic.
› P3792R0
Why `constant_wrapper` is not a usable replacement for `nontype`
Bronek Kozicki
B. Kozicki
2025-07-13
2025-07
Doc Date
2025-07-13
Abstract
The lack of LEWG consensus during the Sofia meeting to replace `nontype` with `constant_wrapper` as a `function_ref` construction parameter has reportedly surprised some members of LWG. Plausibly, it might have also surprised the wider C++ community. This paper is an attempt to explain the process and the rationale behind the (lack of) decision for such a change.
› P3794R0
An idea or two on renaming the nontype tag
Zhihao Yuan
Z. Yuan
2025-07-13
2025-07
› P3796R0
Coroutine Task Issues
Dietmar Kühl
D. Kühl
2025-07-15
2025-07
Doc Date
2025-07-15
Abstract
After the [task proposal](https://wg21.link/p3552) was voted to be forwarded to plenary for inclusion into C++26 a number of issues were brought up. The issues were reported using various means. This paper describes the issues and proposes potential changes to address them.
› P3798R0
The unexpected in std::expected
Alex Kremer
A. Kremer
,
Ayaz Salikhov
A. Salikhov
2025-07-14
2025-07
Doc Date
2025-07-14
Abstract
We propose adding a `has_error()` member function to `std::expected` to complement the existing `has_value()` functionality.
› P3799R0
2025-07 Library Evolution Polls
Inbal Levi
I. Levi
,
Fabio Fracassi
F. Fracassi
,
Andreas Weis
A. Weis
,
Billy Baker
B. Baker
,
Nevin Liber
N. Liber
,
Corentin Jabot
C. Jabot
2025-07-15
2025-07
Doc Date
2025-07-15
Abstract
This paper contains the decision polls that the C++ Library Evolution group will take in July 2025.
› P3801R0
Concerns about the design of std::execution::task
Jonathan Müller
J. Müller
2025-07-15
2025-07
Doc Date
2025-07-15
Abstract
[P3552R3], proposing the coroutine task type `std::execution::task`, was approved in Sofia for inclusion in C++26. I have strong concerns about its design and urge the committee to reconsider.
› P3802R0
Poor Functions
Daveed Vandevoorde
D. Vandevoorde
2025-07-15
2025-07