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  | 
|---|---|---|---|---|---|
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  | 
|||
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  | 
|||
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  | 
|
LWG  | 
Stop overconstraining allocators in container deduction guides  | 
June 2021  | 
Complete  | 
13.0  | 
|
LWG  | 
starts_with and ends_with  | 
June 2021  | 
|||
LWG  | 
Default Arguments for pair Forwarding Constructor  | 
June 2021  | 
Complete  | 
14.0  | 
|
LWG  | 
Range constructor for std::string_view  | 
June 2021  | 
Complete  | 
14.0  | 
|
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  | 
||
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  | 
|||
LWG  | 
  | 
February 2022  | 
|||
LWG  | 
Function to mark unreachable code  | 
February 2022  | 
Complete  | 
15.0  | 
|
LWG  | 
  | 
February 2022  | 
|||
LWG  | 
Deprecate   | 
February 2022  | 
|||
LWG  | 
A type trait to detect reference binding to temporary  | 
February 2022  | 
|||
LWG  | 
Making   | 
February 2022  | 
|||
LWG  | 
Pipe support for user-defined range adaptors  | 
February 2022  | 
|||
LWG  | 
  | 
February 2022  | 
|||
LWG  | 
  | 
February 2022  | 
|||
LWG  | 
Windowing range adaptors:   | 
February 2022  | 
|||
LWG  | 
  | 
February 2022  | 
|||
LWG  | 
mdspan: A Non-Owning Multidimensional Array Reference  | 
July 2022  | 
|||
LWG  | 
A Standard   | 
July 2022  | 
|||
LWG  | 
  | 
July 2022  | 
|||
LWG  | 
A Standard   | 
July 2022  | 
|||
LWG  | 
  | 
July 2022  | 
|||
LWG  | 
Extended   | 
July 2022  | 
|||
LWG  | 
Freestanding   | 
July 2022  | 
|||
LWG  | 
  | 
July 2022  | 
|||
LWG  | 
Formatted output  | 
July 2022  | 
|||
LWG  | 
Compatibility between   | 
July 2022  | 
|||
LWG  | 
  | 
July 2022  | 
|||
LWG  | 
Formatting Ranges  | 
July 2022  | 
|||
LWG  | 
Add Constexpr Modifiers to Functions   | 
July 2022  | 
|||
LWG  | 
  | 
July 2022  | 
|||
LWG  | 
  | 
July 2022  | 
|||
LWG  | 
  | 
July 2022  | 
|||
LWG  | 
Move-only types for   | 
July 2022  | 
|||
LWG  | 
Ranges iterators as inputs to non-Ranges algorithms  | 
July 2022  | 
|||
LWG  | 
A more   | 
July 2022  | 
|||
LWG  | 
Clarify handling of encodings in localized formatting of chrono types  | 
July 2022  | 
|||
LWG  | 
  | 
July 2022  | 
|||
LWG  | 
  | 
July 2022  | 
|||
LWG  | 
  | 
July 2022  | 
|||
LWG  | 
Relax requirements on   | 
July 2022  | 
|||
LWG  | 
Standard Library Modules   | 
July 2022  | 
|||
LWG  | 
Support exclusive mode for   | 
July 2022  | 
|||
LWG  | 
  | 
July 2022  | 
|||
LWG  | 
Relaxing range adaptors to allow for move only types  | 
July 2022  | 
|||
LWG  | 
  | 
July 2022  | 
|||
LWG  | 
  | 
July 2022  | 
|||
LWG  | 
Exposing   | 
July 2022  | 
|||
LWG  | 
  | 
July 2022  | 
|||
LWG  | 
Add a conditional   | 
July 2022  | 
|||
LWG  | 
  | 
July 2022  | 
|||
LWG  | 
Empty Product for certain Views  | 
July 2022  | 
|||
LWG  | 
  | 
July 2022  | 
|||
LWG  | 
Make   | 
July 2022  | 
|||
LWG  | 
C-Array Interoperability of MDSpan  | 
July 2022  | 
|||
LWG  | 
Improving default container formatting  | 
July 2022  | 
|||
LWG  | 
Explicit lifetime management  | 
July 2022  | 
|||
LWG  | 
  | 
July 2022  | 
|||
LWG  | 
mdspan: rename pointer and contiguous  | 
July 2022  | 
|||
LWG  | 
Add the missing   | 
July 2022  | 
|||
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  | 
||||
  | 
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  | 
ranges  | 
||
  | 
November 2020  | 
Fixed by LWG3435  | 
|||
  | 
November 2020  | 
Complete  | 
13.0  | 
||
Missing requirement for   | 
November 2020  | 
spaceship  | 
|||
Deduction guides for   | 
November 2020  | 
Complete  | 
14.0  | 
||
The const overloads of   | 
November 2020  | 
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  | 
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  | 
spaceship  | 
|||
  | 
November 2020  | 
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  | 
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  | 
||
  | 
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  | 
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  | 
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  | 
ranges  | 
|
  | 
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  | 
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  | 
ranges  | 
|
  | 
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  | 
format  | 
|||
  | 
October 2021  | 
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  | 
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  | 
||||
  | 
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  | 
||
  | 
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  | 
||||
  | 
July 2022  | 
spaceship  | 
|||
Make   | 
July 2022  | 
format  | 
|||
Should   | 
July 2022  | 
||||
Missing requirements for   | 
July 2022  | 
||||
LWG 2059 added overloads that might be ill-formed for sets  | 
July 2022  | 
||||
Hashability shouldn’t depend on basic_string’s allocator  | 
July 2022  | 
||||
chunk_view::outer-iterator::value_type::size should return unsigned type  | 
July 2022  | 
ranges  | 
|||
  | 
July 2022  | 
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  | 
||||
Directory iterators should be usable with default sentinel  | 
July 2022  | 
||||
Allow an   | 
July 2022  | 
format  | 
|||
  | 
July 2022  | 
Complete  | 
14.0  | 
||
  | 
Not voted in  | 
Complete  | 
14.0  | 
||
  | 
Not voted in  | 
Complete  | 
15.0  | 
||