libc++ C++2c Status

Overview

In June 2023, the C++ standard committee adopted the first changes to the next version of the C++ standard, known here as “C++2c” (probably to be C++26).

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

P2497R0

LWG

Testing for success or failure of <charconv> functions

Varna June 2023

P2592R3

LWG

Hashing support for std::chrono value classes

Varna June 2023

P2587R3

LWG

to_string or not to_string

Varna June 2023

format

P2562R1

LWG

constexpr Stable Sorting

Varna June 2023

P2545R4

LWG

Read-Copy Update (RCU)

Varna June 2023

P2530R3

LWG

Hazard Pointers for C++26

Varna June 2023

P2538R1

LWG

ADL-proof std::projected

Varna June 2023

ranges

P2495R3

LWG

Interfacing stringstreams with string_view

Varna June 2023

P2510R3

LWG

Formatting pointers

Varna June 2023

Complete [1]

17.0

format

P2198R7

LWG

Freestanding Feature-Test Macros and Implementation-Defined Extensions

Varna June 2023

P2338R4

LWG

Freestanding Library: Character primitives and the C library

Varna June 2023

P2013R5

LWG

Freestanding Language: Optional ::operator new

Varna June 2023

P2363R5

LWG

Extending associative containers with the remaining heterogeneous overloads

Varna June 2023

P1901R2

LWG

Enabling the Use of weak_ptr as Keys in Unordered Associative Containers

Varna June 2023

P1885R12

LWG

Naming Text Encodings to Demystify Them

Varna June 2023

P0792R14

LWG

function_ref: a type-erased callable reference

Varna June 2023

P2874R2

LWG

Mandating Annex D Require No More

Varna June 2023

P2757R3

LWG

Type-checking format args

Varna June 2023

format

P2637R3

LWG

Member visit

Varna June 2023

format

P2641R4

CWG, LWG

Checking if a union alternative is active

Varna June 2023

P1759R6

LWG

Native handles and file streams

Varna June 2023

P2697R1

LWG

Interfacing bitset with string_view

Varna June 2023

P1383R2

LWG

More constexpr for <cmath> and <complex>

Varna June 2023

P2734R0

LWG

Adding the new SI prefixes

Varna June 2023

Complete

17.0

P2548R6

LWG

copyable_function

Varna June 2023

P2714R1

LWG

Bind front and back to NTTP callables

Varna June 2023

P2630R4

LWG

submdspan

Varna June 2023

Note

Library Working Group Issues Status

Issue #

Issue Name

Meeting

Status

First released version

Labels

2994

Needless UB for basic_string and basic_string_view

Varna June 2023

Complete

5.0

3884

flat_foo is missing allocator-extended copy/move constructors

Varna June 2023

flat containers

3885

op should be in [zombie.names]

Varna June 2023

Nothing To Do

3887

Version macro for allocate_at_least

Varna June 2023

3893

LWG 3661 broke atomic<shared_ptr<T>> a; a = nullptr;

Varna June 2023

3894

generator::promise_type::yield_value(ranges::elements_of<Rng, Alloc>) should not be noexcept

Varna June 2023

3903

span destructor is redundantly noexcept

Varna June 2023

Complete

7.0

3904

lazy_split_view::outer-iterator’s const-converting constructor isn’t setting trailing_empty_

Varna June 2023

ranges

3905

Type of std::fexcept_t

Varna June 2023

Complete

3.4

3912

enumerate_view::iterator::operator- should be noexcept

Varna June 2023

ranges

3914

Inconsistent template-head of ranges::enumerate_view

Varna June 2023

ranges

3915

Redundant paragraph about expression variations

Varna June 2023

ranges

3925

Concept formattable’s definition is incorrect

Varna June 2023

Complete

17.0

format

3927

Unclear preconditions for operator[] for sequence containers

Varna June 2023

Nothing To Do

3935

template<class X> constexpr complex& operator=(const complex<X>&) has no specification

Varna June 2023

Complete

3.4

3938

Cannot use std::expected monadic ops with move-only error_type

Varna June 2023

3940

std::expected<void, E>::value() also needs E to be copy constructible

Varna June 2023

3343

Ordering of calls to unlock() and notify_all() in Effects element of notify_all_at_thread_exit() should be reversed

Not Yet Adopted

Complete

16.0

3892

Incorrect formatting of nested ranges and tuples

Not Yet Adopted

Complete

17.0

format