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

Complete

19.0

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

Complete

19.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

Complete

19.0

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

P2875R4

LWG

Undeprecate polymorphic_allocator::destroy for C++26

Tokyo March 2024

Complete

15.0

P2867R2

LWG

Remove Deprecated strstreams From C++26

Tokyo March 2024

Complete

19.0

P2869R4

LWG

Remove Deprecated shared_ptr Atomic Access APIs from C++26

Tokyo March 2024

Complete

19.0

P2872R3

LWG

Remove wstring_convert From C++26

Tokyo March 2024

Complete

19.0

P3107R5

LWG

Permit an efficient implementation of std::print

Tokyo March 2024

format Defect Report

P3142R0

LWG

Printing Blank Lines with println

Tokyo March 2024

Complete

19.0

format

P2845R8

LWG

Formatting of std::filesystem::path

Tokyo March 2024

format

P0493R5

LWG

Atomic minimum/maximum

Tokyo March 2024

P2542R8

LWG

views::concat

Tokyo March 2024

ranges

P2591R5

LWG

Concatenation of strings and string views

Tokyo March 2024

P2248R8

LWG

Enabling list-initialization for algorithms

Tokyo March 2024

P2810R4

LWG

is_debugger_present is_replaceable

Tokyo March 2024

P1068R11

LWG

Vector API for random number generation

Tokyo March 2024

P2944R3

LWG

Comparisons for reference_wrapper

Tokyo March 2024

P2642R6

LWG

Padded mdspan layouts

Tokyo March 2024

P3029R1

LWG

Better mdspan’s CTAD

Tokyo March 2024

Complete

19.0

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

Complete

19.0

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

3767

codecvt<charN_t, char8_t, mbstate_t> incorrectly added to locale

Tokyo March 2024

3919

enumerate_view may invoke UB for sized common non-forward underlying ranges

Tokyo March 2024

ranges

3950

std::basic_string_view comparison operators are overspecified

Tokyo March 2024

Complete

18.0

3975

Specializations of basic_format_context should not be permitted

Tokyo March 2024

Nothing To Do

format

3984

ranges::to’s recursion branch may be ill-formed

Tokyo March 2024

ranges

4011

"Effects: Equivalent to return" in [span.elem]

Tokyo March 2024

Nothing To Do

4012

common_view::begin/end are missing the simple-view check

Tokyo March 2024

ranges

4013

lazy_split_view::outer-iterator::value_type should not provide default constructor

Tokyo March 2024

ranges

4016

container-insertable checks do not match what container-inserter does

Tokyo March 2024

4023

Preconditions of std::basic_streambuf::setg/setp

Tokyo March 2024

4025

Move assignment operator of std::expected<cv void, E> should not be conditionally deleted

Tokyo March 2024

4030

Clarify whether arithmetic expressions in [numeric.sat.func] are mathematical or C++

Tokyo March 2024

Nothing To Do

4031

bad_expected_access<void> member functions should be noexcept

Tokyo March 2024

Complete

16.0

4035

single_view should provide empty

Tokyo March 2024

ranges

4036

__alignof_is_defined is only implicitly specified in C++ and not yet deprecated

Tokyo March 2024

4037

Static data members of ctype_base are not yet required to be usable in constant expressions

Tokyo March 2024

4038

std::text_encoding::aliases_view should have constexpr iterators

Tokyo March 2024

4043

“ASCII” is not a registered character encoding

Tokyo March 2024

Nothing To Do

4045

tuple can create dangling references from tuple-like

Tokyo March 2024

4053

Unary call to std::views::repeat does not decay the argument

Tokyo March 2024

ranges

4054

Repeating a repeat_view should repeat the view

Tokyo March 2024

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

XXXX

The sys_info range should be affected by save

Not Yet Adopted

Complete

19.0