libc++ C++2b Status¶
Overview¶
In November 2020, the C++ standard committee adopted the first changes to the next version of the C++ standard, known here as “C++2b” (probably to be C++23).
This page shows the status of libc++; the status of clang’s support of the language features is here.
Attention
Features in unreleased drafts of the standard are subject to change.
The groups that have contributed papers:
CWG - Core Language Working group
LWG - Library working group
SG1 - Study group #1 (Concurrency working group)
Note
“Nothing to do” means that no library changes were needed to implement this change.
Paper Status¶
Paper # |
Group |
Paper Name |
Meeting |
Status |
First released version |
Labels |
---|---|---|---|---|---|---|
LWG |
A Proposal to add stacktrace library |
Autumn 2020 |
||||
LWG |
Support C atomics in C++ |
Autumn 2020 |
Complete |
15.0 |
||
LWG |
A proposal for a type trait to detect scoped enumerations |
Autumn 2020 |
Complete |
12.0 |
||
LWG |
string contains function |
Autumn 2020 |
Complete |
12.0 |
||
LWG |
std::to_underlying for enumerations |
February 2021 |
Complete |
13.0 |
||
LWG |
Conditionally borrowed ranges |
February 2021 |
ranges |
|||
LWG |
Locks lock lockables |
February 2021 |
||||
LWG |
Inheriting from std::variant |
February 2021 |
Complete |
13.0 |
||
LWG |
Relax Requirements for time_point::clock |
February 2021 |
||||
LWG |
Repairing input range adaptors and counted_iterator |
February 2021 |
ranges |
|||
LWG |
Providing size feedback in the Allocator interface |
June 2021 |
Complete |
15.0 |
||
LWG |
A strstream replacement using span<charT> as buffer |
June 2021 |
||||
LWG |
out_ptr - a scalable output pointer abstraction |
June 2021 |
||||
LWG |
Making std::type_info::operator== constexpr |
June 2021 |
||||
LWG |
Iterators pair constructors for stack and queue |
June 2021 |
Complete |
14.0 |
ranges |
|
LWG |
Stop overconstraining allocators in container deduction guides |
June 2021 |
Complete |
13.0 |
||
LWG |
starts_with and ends_with |
June 2021 |
ranges |
|||
LWG |
Default Arguments for pair Forwarding Constructor |
June 2021 |
Complete |
14.0 |
||
LWG |
Range constructor for std::string_view |
June 2021 |
Complete |
14.0 |
ranges |
|
LWG |
invoke_r |
June 2021 |
||||
LWG |
A Proposal to Prohibit std::basic_string and std::basic_string_view construction from nullptr |
June 2021 |
Complete |
13.0 |
||
LWG |
|
October 2021 |
||||
LWG |
Monadic operations for |
October 2021 |
Complete |
14.0 |
||
LWG |
|
October 2021 |
Complete |
14.0 |
||
LWG |
|
October 2021 |
Complete |
14.0 |
||
LWG |
Printing |
October 2021 |
Complete |
14.0 |
||
LWG |
Byteswapping for fun&&nuf |
October 2021 |
Complete |
14.0 |
||
LWG |
|
October 2021 |
||||
LWG |
Heterogeneous erasure overloads for associative containers |
October 2021 |
||||
LWG |
Require |
October 2021 |
Complete |
14.0 |
||
LWG |
Add a |
October 2021 |
||||
LWG |
|
October 2021 |
In Progress |
ranges |
||
LWG |
Clarifying the status of the ‘C headers’ |
October 2021 |
||||
LWG |
Cleaning up |
October 2021 |
||||
LWG |
Add a conditional |
October 2021 |
Complete |
14.0 |
||
LWG |
|
February 2022 |
Complete |
16.0 |
||
LWG |
|
February 2022 |
In Progress 1 |
|||
LWG |
Function to mark unreachable code |
February 2022 |
Complete |
15.0 |
||
LWG |
|
February 2022 |
ranges |
|||
LWG |
Deprecate |
February 2022 |
Complete 2 |
|||
LWG |
A type trait to detect reference binding to temporary |
February 2022 |
||||
LWG |
Making |
February 2022 |
Complete |
16.0 |
||
LWG |
Pipe support for user-defined range adaptors |
February 2022 |
ranges |
|||
LWG |
|
February 2022 |
ranges |
|||
LWG |
|
February 2022 |
ranges |
|||
LWG |
Windowing range adaptors: |
February 2022 |
ranges |
|||
LWG |
|
February 2022 |
ranges |
|||
LWG |
mdspan: A Non-Owning Multidimensional Array Reference |
July 2022 |
||||
LWG |
A Standard |
July 2022 |
||||
LWG |
|
July 2022 |
Complete |
16.0 |
||
LWG |
A Standard |
July 2022 |
||||
LWG |
|
July 2022 |
ranges |
|||
LWG |
Extended |
July 2022 |
||||
LWG |
Freestanding |
July 2022 |
||||
LWG |
|
July 2022 |
ranges |
|||
LWG |
Formatted output |
July 2022 |
||||
LWG |
Compatibility between |
July 2022 |
||||
LWG |
|
July 2022 |
ranges |
|||
LWG |
Formatting Ranges |
July 2022 |
Complete |
16.0 |
format ranges |
|
LWG |
Add Constexpr Modifiers to Functions |
July 2022 |
Complete |
16.0 |
||
LWG |
|
July 2022 |
ranges |
|||
LWG |
|
July 2022 |
ranges |
|||
LWG |
|
July 2022 |
ranges |
|||
LWG |
Move-only types for |
July 2022 |
||||
LWG |
Ranges iterators as inputs to non-Ranges algorithms |
July 2022 |
ranges |
|||
LWG |
A more |
July 2022 |
Complete |
16.0 |
||
LWG |
Clarify handling of encodings in localized formatting of chrono types |
July 2022 |
||||
LWG |
|
July 2022 |
Complete |
16.0 |
||
LWG |
|
July 2022 |
Complete |
16.0 |
||
LWG |
|
July 2022 |
Complete |
16.0 |
ranges |
|
LWG |
Relax requirements on |
July 2022 |
||||
LWG |
Standard Library Modules |
July 2022 |
||||
LWG |
Support exclusive mode for |
July 2022 |
||||
LWG |
|
July 2022 |
ranges |
|||
LWG |
Relaxing range adaptors to allow for move only types |
July 2022 |
ranges |
|||
LWG |
|
July 2022 |
Complete |
16.0 |
ranges |
|
LWG |
|
July 2022 |
ranges |
|||
LWG |
Exposing |
July 2022 |
Complete |
15.0 |
||
LWG |
|
July 2022 |
||||
LWG |
Add a conditional |
July 2022 |
||||
LWG |
|
July 2022 |
ranges |
|||
LWG |
Empty Product for certain Views |
July 2022 |
ranges |
|||
LWG |
|
July 2022 |
Complete |
16.0 |
||
LWG |
Make |
July 2022 |
||||
LWG |
C-Array Interoperability of MDSpan |
July 2022 |
||||
LWG |
Improving default container formatting |
July 2022 |
Partial |
|||
LWG |
Explicit lifetime management |
July 2022 |
||||
LWG |
|
July 2022 |
||||
LWG |
mdspan: rename pointer and contiguous |
July 2022 |
||||
LWG |
Add the missing |
July 2022 |
||||
LWG |
Asymmetric Fences |
November 2022 |
concurrency TS |
|||
LWG |
Revising the wording of |
November 2022 |
Complete |
9.0 |
||
LWG |
|
November 2022 |
concurrency TS |
|||
LWG |
Improved Proposed Wording for LWG 2114 |
November 2022 |
||||
LWG |
Concurrency TS 2 fixes |
November 2022 |
concurrency TS |
|||
LWG |
Monadic Functions for |
November 2022 |
||||
LWG |
Should the output of |
November 2022 |
format |
|||
LWG |
Poison Pills are Too Toxic |
November 2022 |
ranges |
|||
LWG |
No Further Fundamentals TSes |
November 2022 |
Nothing To Do |
Library Working Group Issues Status¶
Issue # |
Issue Name |
Meeting |
Status |
First released version |
Labels |
---|---|---|---|---|---|
Self-move-assignment of library types, again |
November 2020 |
Nothing To Do |
|||
Missing |
November 2020 |
Complete |
16.0 |
||
|
November 2020 |
||||
What is the stored pointer value of an empty |
November 2020 |
Nothing To Do |
|||
|
November 2020 |
Complete |
9.0 |
||
Random access iterator requirements lack limiting relational operators domain to comparing those from the same range |
November 2020 |
Nothing To Do |
|||
|
November 2020 |
Fixed by LWG3435 |
|||
|
November 2020 |
Complete |
13.0 |
||
Missing requirement for |
November 2020 |
Complete |
16.0 |
spaceship |
|
Deduction guides for |
November 2020 |
Complete |
14.0 |
ranges |
|
The const overloads of |
November 2020 |
Complete |
16.0 |
ranges |
|
|
November 2020 |
||||
Existence of |
November 2020 |
Complete |
5.0 |
||
P0083R3 |
November 2020 |
Nothing To Do |
|||
Clarify |
November 2020 |
Nothing To Do |
|||
Unclear behavior of |
November 2020 |
||||
|
November 2020 |
||||
|
November 2020 |
||||
LWG2989 breaks |
November 2020 |
Complete |
14.0 |
||
|
November 2020 |
Complete |
14.0 |
ranges |
|
Domain of |
November 2020 |
ranges |
|||
Finish removing subrange’s conversions from pair-like |
November 2020 |
ranges |
|||
|
November 2020 |
Complete |
14.0 |
ranges |
|
|
November 2020 |
Complete |
16.0 |
ranges |
|
[algorithms.requirements]/15 doesn’t reserve as many rights as it intends to |
November 2020 |
Nothing To Do |
|||
cpp17-iterator should check that the type looks like an iterator first |
November 2020 |
Complete |
14.0 |
ranges |
|
Imperfect ADL emulation for boolean-testable |
November 2020 |
Nothing To Do |
ranges |
||
|
November 2020 |
Nothing To Do |
|||
|
November 2020 |
Complete |
16.0 |
spaceship |
|
|
November 2020 |
Complete |
16.0 |
spaceship |
|
|
November 2020 |
Complete |
14.0 |
ranges |
|
|
November 2020 |
Nothing To Do |
|||
|
November 2020 |
Complete |
14.0 |
||
|
November 2020 |
Complete |
14.0 |
ranges |
|
|
November 2020 |
ranges |
|||
|
November 2020 |
Complete |
16.0 |
ranges |
|
Generic code cannot call |
November 2020 |
Nothing To Do |
ranges |
||
Incorrect Postconditions on |
November 2020 |
Nothing To Do |
|||
Unimplementable |
November 2020 |
Complete |
14.0 |
||
|
November 2020 |
Nothing To Do |
|||
|
November 2020 |
Complete |
14.0 |
spaceship |
|
Specify the requirements for |
November 2020 |
Nothing To Do |
|||
|
November 2020 |
Complete |
14.0 |
ranges |
|
|
November 2020 |
Complete |
14.0 |
ranges |
|
Normative encouragement in non-normative note |
November 2020 |
Complete |
15.0 |
format |
|
Nesting |
November 2020 |
Complete |
15.0 |
ranges |
|
|
November 2020 |
||||
Simplify constraints for |
November 2020 |
ranges |
|||
|
November 2020 |
Complete |
14.0 |
ranges |
|
|
November 2020 |
Complete |
14.0 |
ranges |
|
Problems with |
February 2021 |
ranges |
|||
|
February 2021 |
Complete |
14.0 |
ranges |
|
|
February 2021 |
Nothing To Do |
ranges |
||
Minimal improvements to |
February 2021 |
Complete |
16.0 |
ranges |
|
Allow ranges to be conditionally borrowed |
February 2021 |
Superseded by P2017R1 |
ranges |
||
|
February 2021 |
Nothing To Do |
|||
|
February 2021 |
Complete |
14.0 |
ranges |
|
|
February 2021 |
Complete |
16.0 |
ranges |
|
|
February 2021 |
ranges |
|||
|
June 2021 |
||||
|
June 2021 |
Nothing To Do |
|||
LWG 491 and the specification of |
June 2021 |
||||
|
June 2021 |
spaceship |
|||
|
June 2021 |
||||
§[formatter.requirements]: Formatter requirements forbid use of |
June 2021 |
format |
|||
|
June 2021 |
Superseded by P2415R2 |
ranges |
||
Missing allocator-extended constructors for |
June 2021 |
Complete |
14.0 |
||
|
June 2021 |
Complete |
14.0 |
ranges |
|
Exception requirements on char trait operations unclear |
June 2021 |
Nothing To Do |
|||
Incomplete synopses for |
June 2021 |
||||
|
June 2021 |
Complete |
14.0 |
ranges |
|
Overly strict requirements on |
June 2021 |
Nothing To Do |
|||
Missing requirement on |
June 2021 |
Complete |
14.0 |
||
|
June 2021 |
ranges |
|||
Return types of |
June 2021 |
||||
|
June 2021 |
||||
|
June 2021 |
||||
|
June 2021 |
Complete |
14.0 |
||
|
June 2021 |
||||
|
June 2021 |
ranges |
|||
Make |
June 2021 |
Complete |
14.0 |
ranges |
|
Should |
June 2021 |
chrono |
|||
|
June 2021 |
Complete |
14.0 |
format |
|
§[format.arg] There should be no const in |
June 2021 |
Complete |
14.0 |
format |
|
|
June 2021 |
Complete |
14.0 |
ranges |
|
|
June 2021 |
Complete |
14.0 |
format |
|
Definition of when |
June 2021 |
Nothing To Do |
ranges |
||
|
June 2021 |
Complete |
14.0 |
format |
|
|
June 2021 |
ranges |
|||
|
June 2021 |
Complete |
15.0 |
||
|
June 2021 |
Complete |
14.0 |
ranges |
|
|
June 2021 |
Nothing To Do |
ranges |
||
Parallel specialized memory algorithms should require forward iterators |
June 2021 |
||||
Useless constraint in |
June 2021 |
ranges |
|||
|
June 2021 |
ranges |
|||
Incorrect specification of |
October 2021 |
Nothing To Do |
|||
Inconsistency in parsing floating point numbers |
October 2021 |
||||
|
October 2021 |
||||
|
October 2021 |
||||
|
October 2021 |
chrono |
|||
Excessive unwrapping in |
October 2021 |
Complete |
14.0 |
||
|
October 2021 |
||||
|
October 2021 |
Complete |
15.0 |
||
|
October 2021 |
Nothing To Do |
ranges |
||
|
October 2021 |
Complete |
14.0 |
ranges |
|
Some problems with the wording changes of P1739R4 |
October 2021 |
Complete |
15.0 |
ranges |
|
Issues of |
October 2021 |
Complete |
14.0 |
||
|
October 2021 |
Complete |
14.0 |
ranges |
|
|
October 2021 |
Complete |
14.0 |
ranges |
|
Inconsistent |
October 2021 |
||||
|
October 2021 |
Complete |
15.0 |
ranges |
|
|
October 2021 |
chrono |
|||
The |
October 2021 |
Complete |
14.0 |
||
Semantic requirements of |
October 2021 |
Nothing To Do |
ranges |
||
|
October 2021 |
ranges |
|||
Issue with internal counter in |
October 2021 |
||||
|
October 2021 |
ranges |
|||
Constraint recursion for |
October 2021 |
spaceship |
|||
Formatting move-only iterators take two |
October 2021 |
Complete |
16.0 |
format ranges |
|
|
October 2021 |
Complete |
16.0 |
ranges |
|
|
October 2021 |
||||
|
October 2021 |
||||
|
October 2021 |
Complete |
14.0 |
ranges |
|
Missing Throws element for |
October 2021 |
Complete |
14.0 |
||
|
October 2021 |
Complete |
14.0 |
ranges |
|
|
October 2021 |
Complete |
14.0 |
ranges |
|
The range constructor makes |
October 2021 |
Complete |
14.0 |
ranges |
|
|
October 2021 |
||||
The |
October 2021 |
Complete |
14.0 |
ranges |
|
|
October 2021 |
Complete |
16.0 |
ranges |
|
|
October 2021 |
ranges |
|||
|
October 2021 |
ranges |
|||
Several iterators’ |
October 2021 |
ranges |
|||
Exposition-only classes proxy and postfix-proxy for |
October 2021 |
Complete |
14.0 |
ranges |
|
|
February 2022 |
||||
|
February 2022 |
||||
|
February 2022 |
||||
|
February 2022 |
||||
common_iterator’s postfix-proxy needs |
February 2022 |
ranges |
|||
|
February 2022 |
Nothing To Do |
ranges |
||
|
February 2022 |
ranges |
|||
Inconsistent pointer alignment in |
February 2022 |
Complete |
14.0 |
format |
|
LWG 3498 seems to miss the non-member |
February 2022 |
||||
Unnecessary |
February 2022 |
ranges |
|||
Specification of |
February 2022 |
Nothing To Do |
format |
||
Remove feature-test macro |
February 2022 |
Complete |
15.0 |
||
|
February 2022 |
Nothing To Do |
|||
Missing |
February 2022 |
ranges |
|||
|
February 2022 |
Complete |
15.0 |
format |
|
[fund.ts.v2] Reinstate and bump |
February 2022 |
||||
Are |
February 2022 |
Nothing To Do |
|||
|
February 2022 |
Complete |
15.0 |
format |
|
|
February 2022 |
||||
|
February 2022 |
Complete |
14.0 |
ranges |
|
|
February 2022 |
||||
|
July 2022 |
ranges |
|||
|
July 2022 |
||||
Inconsistent bit operations returning a count |
July 2022 |
Complete |
15.0 |
||
Consider |
July 2022 |
Complete |
15.0 |
||
|
July 2022 |
ranges |
|||
|
July 2022 |
||||
|
July 2022 |
ranges |
|||
|
July 2022 |
||||
|
July 2022 |
Complete |
16.0 |
||
|
July 2022 |
ranges spaceship |
|||
Make |
July 2022 |
format |
|||
Should |
July 2022 |
ranges spaceship |
|||
Missing requirements for |
July 2022 |
Complete |
16.0 |
||
LWG 2059 added overloads that might be ill-formed for sets |
July 2022 |
||||
Hashability shouldn’t depend on basic_string’s allocator |
July 2022 |
Complete |
16.0 |
||
chunk_view::outer-iterator::value_type::size should return unsigned type |
July 2022 |
ranges |
|||
|
July 2022 |
Complete |
16.0 |
ranges |
|
LWG-3703 was underly ambitious |
July 2022 |
||||
The |
July 2022 |
ranges |
|||
Missing preconditions for slide_view constructor |
July 2022 |
ranges |
|||
|
July 2022 |
ranges |
|||
Sorted with respect to comparator (only) |
July 2022 |
||||
|
July 2022 |
ranges |
|||
Directory iterators should be usable with default sentinel |
July 2022 |
ranges |
|||
Allow an |
July 2022 |
Complete |
16.0 |
format |
|
|
July 2022 |
Complete |
14.0 |
||
Container requirements tables should distinguish |
November 2022 |
||||
|
November 2022 |
||||
Limit permission to specialize variable templates to program-defined types |
November 2022 |
Nothing To Do |
|||
§[stacktrace.basic.nonmem]: |
November 2022 |
||||
|
November 2022 |
||||
|
November 2022 |
ranges |
|||
|
November 2022 |
||||
Unsigned integer types don’t model advanceable |
November 2022 |
ranges |
|||
Making |
November 2022 |
||||
|
November 2022 |
Complete |
16.0 |
||
|
November 2022 |
Complete |
16.0 |
format |
|
|
November 2022 |
Complete |
16.0 |
ranges |
|
Is a cv-qualified |
November 2022 |
||||
|
November 2022 |
ranges |
|||
|
November 2022 |
Nothing To Do |
ranges |
||
|
November 2022 |
ranges |
|||
|
November 2022 |
ranges |
|||
Missing preconditions for |
November 2022 |
Complete |
16.0 |
ranges |
|
|
November 2022 |
ranges |
|||
|
November 2022 |
Complete |
16.0 |
||
|
November 2022 |
spaceship |
|||
|
November 2022 |
ranges |
|||
Too many papers bump |
November 2022 |
format |
|||
Missing feature macro for |
November 2022 |
flat containers |
|||
Clarify entity vs. freestanding entity |
November 2022 |
||||
Class template expected synopsis contains declarations that do not match the detailed description |
November 2022 |
||||
|
November 2022 |
||||
What’s the effect of |
November 2022 |
||||
|
November 2022 |
ranges |
|||
|
November 2022 |
ranges |
|||
|
November 2022 |
ranges |
|||
|
November 2022 |
||||
|
November 2022 |
||||
|
November 2022 |
ranges |
|||
|
November 2022 |
ranges |
|||
|
November 2022 |
ranges |
|||
|
November 2022 |
ranges |
|||
|
November 2022 |
flat containers |
|||
Broken dependencies in the |
November 2022 |
||||
|
November 2022 |
||||
The exposition-only alias templates |
November 2022 |
||||
Should |
November 2022 |
||||
std.compat should not provide |
November 2022 |
||||
|
November 2022 |
ranges |
|||
|
November 2022 |
||||
|
November 2022 |
Complete |
16.0 |
||
Self-move-assignment of |
November 2022 |
||||
|
November 2022 |
ranges |
|||
Rvalue reference and |
November 2022 |
||||
|
November 2022 |
ranges |
|||
Add freestanding items requested by NB comments |
November 2022 |
||||
|
November 2022 |
flat containers |
|||
Missing preconditions on |
November 2022 |
||||
Exposition-only concepts are not described in library intro |
November 2022 |
Nothing To Do |
|||
Avoiding normalization in |
November 2022 |
||||
Unnecessary precondition for |
November 2022 |
||||
Number of |
November 2022 |
Nothing To Do |
|||
Redundant specification [for overload of yield_value] |
November 2022 |
||||
|
Not voted in |
Complete |
15.0 |
||
|
Not voted in |
Complete |
14.0 |
||
Ordering of calls to |
Not Yet Adopted |
Complete |
16.0 |