libc++ C++29 Status

Overview

In June 2026, the C++ standard committee adopted the first changes to the next version of the C++ standard, known here as “C++29”.

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 #

Paper Name

Meeting

Status

First released version

GitHub issue

Notes

P2434R5

Nondeterministic pointer provenance

2026-06 (Brno)

Voted as a Defect Report.

P4101R1

Consteval-only Values for C++26

2026-06 (Brno)

Voted as a Defect Report.

P2414R12

Pointer lifetime-end zap proposed solutions

2026-06 (Brno)

Voted as a Defect Report.

P3319R6

Add an iota object for simd (and more)

2026-06 (Brno)

P3798R1

The unexpected in std::expected

2026-06 (Brno)

P3052R2

view_interface::at()

2026-06 (Brno)

P4206R0

Revert string support in std::constant_wrapper

2026-06 (Brno)

To be applied as a Defect Report.

P3395R6

Fix encoding issues and add a formatter for std::error_code

2026-06 (Brno)

P3505R4

Fix the default floating-point representation in std::format

2026-06 (Brno)

To be applied as a Defect Report.

P3154R3

Deprecating signed character types in iostreams

2026-06 (Brno)

P3428R4

Hazard Pointer Batches

2026-06 (Brno)

P3248R5

Require [u]intptr_t

2026-06 (Brno)

P3793R2

Better shifting

2026-06 (Brno)

P3242R4

Copy and fill for mdspan

2026-06 (Brno)

P3692R4

How to Avoid OOTA Without Really Trying

2026-06 (Brno)

P3104R6

Bit permutations

2026-06 (Brno)

P3772R2

std::simd overloads for bit permutations

2026-06 (Brno)

P3091R6

Better Lookups for map, unordered_map, and flat_map

2026-06 (Brno)

P3125R6

constexpr pointer tagging

2026-06 (Brno)

P2019R9

Thread attributes

2026-06 (Brno)

P3785R1

Library Wording Changes for Defaulted Postfix Increment and Decrement Operations

2026-06 (Brno)

Library Working Group Issues Status

Issue #

Issue Name

Meeting

Status

First released version

GitHub issue

Notes

LWG3417

Missing volatile atomic deprecations

2026-06 (Brno)

LWG4121

ranges::to constructs associative containers via c.emplace(c.end(), *it)

2026-06 (Brno)

LWG4125

move_iterator’s default constructor should be constrained

2026-06 (Brno)

LWG4158

packaged_task::operator= should abandon its shared state

2026-06 (Brno)

LWG4182

Definition of NULL is too broad

2026-06 (Brno)

LWG4218

Constraint recursion in basic_const_iterator’s relational operators due to ADL + CWG 2369

2026-06 (Brno)

LWG4249

The past end issue for lazy_split_view

2026-06 (Brno)

LWG4267

Uses-allocator construction is meaningless for tuple of references

2026-06 (Brno)

LWG4359

as_awaitable(expr, p) does not define semantics of call if p is not an lvalue

2026-06 (Brno)

LWG4385

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

2026-06 (Brno)

LWG4471

Remove test for get_env noexcept-ness from inline_scheduler

2026-06 (Brno)

LWG4487

Is member is_steady of a Cpp17Clock type required to be usable in constant expressions?

2026-06 (Brno)

LWG4490

Allow calling std::ranges::size in ranges algorithms

2026-06 (Brno)

LWG4521

Improve [atomics.order] p10 to have a consistent way with [intro.races]

2026-06 (Brno)

LWG4531

Should there be a feature-test macro update for constexpr std::to_(w)string?

2026-06 (Brno)

LWG4567

Feature test macro value for apply_result, is_applicable

2026-06 (Brno)

LWG4568

std::execution::spawn_future is mishandling dependent senders

2026-06 (Brno)

LWG4579

make-state<Rcvr>::state-type::complete uses Env which is not in scope

2026-06 (Brno)