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

Complete

18.0

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

Complete

18.0

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

Partial

18.0

P2641R4

CWG, LWG

Checking if a union alternative is active

Varna June 2023

P1759R6

LWG

Native handles and file streams

Varna June 2023

Complete

18.0

P2697R1

LWG

Interfacing bitset with string_view

Varna June 2023

Complete

18.0

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

P0543R3

LWG

Saturation arithmetic

Kona November 2023

Complete

18.0

P2407R5

LWG

Freestanding Library: Partial Classes

Kona November 2023

P2546R5

LWG

Debugging Support

Kona November 2023

P2905R2

LWG

Runtime format strings

Kona November 2023

Complete

18.0

format Defect Report

P2918R2

LWG

Runtime format strings II

Kona November 2023

Complete

18.0

format

P2909R4

LWG

Fix formatting of code units as integers (Dude, where’s my char?)

Kona November 2023

Complete

18.0

format Defect Report

P0952R2

LWG

A new specification for std::generate_canonical

Kona November 2023

P2447R6

LWG

std::span over an initializer list

Kona November 2023

Complete

18.0

P2821R5

LWG

span.at()

Kona November 2023

Complete

18.0

P2868R3

LWG

Remove Deprecated std::allocator Typedef From C++26

Kona November 2023

Complete

18.0

P2870R3

LWG

Remove basic_string::reserve() From C++26

Kona November 2023

Complete

18.0

P2871R3

LWG

Remove Deprecated Unicode Conversion Facets from C++26

Kona November 2023

Complete

18.0

P2819R2

LWG

Add tuple protocol to complex

Kona November 2023

P2937R0

LWG

Freestanding: Remove strtok

Kona November 2023

P2833R2

LWG

Freestanding Library: inout expected span

Kona November 2023

P2836R1

LWG

std::basic_const_iterator should follow its underlying type’s convertibility

Kona November 2023

Defect Report

P2264R7

LWG

Make assert() macro user friendly for C and C++

Kona November 2023

P1673R13

LWG

A free function linear algebra interface based on the BLAS

Kona November 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

Complete

18.0

3940

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

Varna June 2023

Complete

18.0

2392

“character type” is used but not defined

Kona November 2023

3203

span element access invalidation

Kona November 2023

3305

any_cast<void>

Kona November 2023

Complete

18.0

3431

<=> for containers should require three_way_comparable<T> instead of <=>

Kona November 2023

3749

common_iterator should handle integer-class difference types

Kona November 2023

3809

Is std::subtract_with_carry_engine<uint16_t> supposed to work

Kona November 2023

3892

Incorrect formatting of nested ranges and tuples

Kona November 2023

Complete

17.0

format

3897

inout_ptr will not update raw pointer to 0

Kona November 2023

3946

The definition of const_iterator_t should be reworked

Kona November 2023

3947

Unexpected constraints on adjacent_transform_view::base()

Kona November 2023

ranges

3948

possibly-const-range and as-const-pointer should be noexcept

Kona November 2023

ranges

3949

std::atomic<bool>’s trivial destructor dropped in C++17 spec wording

Kona November 2023

3951

[expected.object.swap]: Using value() instead of has_value()

Kona November 2023

3953

iter_move for common_iterator and counted_iterator should return decltype(auto)

Kona November 2023

ranges

3957

[container.alloc.reqmts] The value category of v should be claimed

Kona November 2023

3965

Incorrect example in [format.string.escaped] p3 for formatting of combining characters

Kona November 2023

format

3970

[mdspan.syn] Missing definition of full_extent_t and full_extent

Kona November 2023

3973

Monadic operations should be ADL-proof

Kona November 2023

3974

mdspan::operator[] should not copy OtherIndexTypes

Kona November 2023

3987

Including <flat_foo> doesn’t provide std::begin/end

Kona November 2023

flat containers

3990

Program-defined specializations of std::tuple and std::variant can’t be properly supported

Kona November 2023

4001

iota_view should provide empty

Kona November 2023

ranges

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