libc++ C++23 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). In February 2023, the C++ standard committee approved this draft, and sent it to ISO for approval as 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

Labels

P0881R7

LWG

A Proposal to add stacktrace library

Autumn 2020

P0943R6

LWG

Support C atomics in C++

Autumn 2020

Complete

15.0

P1048R1

LWG

A proposal for a type trait to detect scoped enumerations

Autumn 2020

Complete

12.0

P1679R3

LWG

string contains function

Autumn 2020

Complete

12.0

P1682R3

LWG

std::to_underlying for enumerations

February 2021

Complete

13.0

P2017R1

LWG

Conditionally borrowed ranges

February 2021

ranges

P2160R1

LWG

Locks lock lockables

February 2021

P2162R2

LWG

Inheriting from std::variant

February 2021

Complete

13.0

P2212R2

LWG

Relax Requirements for time_point::clock

February 2021

P2259R1

LWG

Repairing input range adaptors and counted_iterator

February 2021

ranges

P0401R6

LWG

Providing size feedback in the Allocator interface

June 2021

Complete

15.0

P0448R4

LWG

A strstream replacement using span<charT> as buffer

June 2021

P1132R8

LWG

out_ptr - a scalable output pointer abstraction

June 2021

P1328R1

LWG

Making std::type_info::operator== constexpr

June 2021

Complete

17.0

P1425R4

LWG

Iterators pair constructors for stack and queue

June 2021

Complete

14.0

ranges

P1518R2

LWG

Stop overconstraining allocators in container deduction guides

June 2021

Complete

13.0

P1659R3

LWG

starts_with and ends_with

June 2021

ranges

P1951R1

LWG

Default Arguments for pair Forwarding Constructor

June 2021

Complete

14.0

P1989R2

LWG

Range constructor for std::string_view

June 2021

Complete

14.0

ranges

P2136R3

LWG

invoke_r

June 2021

Complete

17.0

P2166R1

LWG

A Proposal to Prohibit std::basic_string and std::basic_string_view construction from nullptr

June 2021

Complete

13.0

P0288R9

LWG

any_invocable

October 2021

P0798R8

LWG

Monadic operations for std::optional

October 2021

Complete

14.0

P0849R8

LWG

auto(x): DECAY_COPY in the language

October 2021

Complete

14.0

P1072R10

LWG

basic_string::resize_and_overwrite

October 2021

Complete

14.0

P1147R1

LWG

Printing volatile Pointers

October 2021

Complete

14.0

P1272R4

LWG

Byteswapping for fun&&nuf

October 2021

Complete

14.0

P1675R2

LWG

rethrow_exception must be allowed to copy

October 2021

P2077R3

LWG

Heterogeneous erasure overloads for associative containers

October 2021

P2251R1

LWG

Require span & basic_string_view to be Trivially Copyable

October 2021

Complete

14.0

P2301R1

LWG

Add a pmr alias for std::stacktrace

October 2021

P2321R2

LWG

zip

October 2021

In Progress

ranges

P2340R1

LWG

Clarifying the status of the ‘C headers’

October 2021

P2393R1

LWG

Cleaning up integer-class types

October 2021

P2401R0

LWG

Add a conditional noexcept specification to std::exchange

October 2021

Complete

14.0

P0323R12

LWG

std::expected

February 2022

Complete

16.0

P0533R9

LWG

constexpr for <cmath> and <cstdlib>

February 2022

In Progress [2]

P0627R6

LWG

Function to mark unreachable code

February 2022

Complete

15.0

P1206R7

LWG

ranges::to: A function to convert any range to a container

February 2022

Complete

17.0

ranges

P1413R3

LWG

Deprecate std::aligned_storage and std::aligned_union

February 2022

Complete [3]

P2255R2

LWG

A type trait to detect reference binding to temporary

February 2022

P2273R3

LWG

Making std::unique_ptr constexpr

February 2022

Complete

16.0

P2387R3

LWG

Pipe support for user-defined range adaptors

February 2022

ranges

P2440R1

LWG

ranges::iota, ranges::shift_left and ranges::shift_right

February 2022

ranges

P2441R2

LWG

views::join_with

February 2022

ranges

P2442R1

LWG

Windowing range adaptors: views::chunk and views::slide

February 2022

ranges

P2443R1

LWG

views::chunk_by

February 2022

ranges

P0009R18

LWG

mdspan: A Non-Owning Multidimensional Array Reference

July 2022

In Progress [#note-P0009R18]_|

P0429R9

LWG

A Standard flat_map

July 2022

P1169R4

LWG

static operator()

July 2022

Complete

16.0

P1222R4

LWG

A Standard flat_set

July 2022

P1223R5

LWG

ranges::find_last(), ranges::find_last_if(), and ranges::find_last_if_not()

July 2022

ranges

P1467R9

LWG

Extended floating-point types and standard names

July 2022

P1642R11

LWG

Freestanding [utilities], [ranges], and [iterators]

July 2022

P1899R3

LWG

stride_view

July 2022

ranges

P2093R14

LWG

Formatted output

July 2022

In Progress

P2165R4

LWG

Compatibility between tuple, pair and tuple-like objects

July 2022

P2278R4

LWG

cbegin should always return a constant iterator

July 2022

ranges

P2286R8

LWG

Formatting Ranges

July 2022

Complete

16.0

format ranges

P2291R3

LWG

Add Constexpr Modifiers to Functions to_chars and from_chars for Integral Types in <charconv> Header

July 2022

Complete

16.0

P2302R4

LWG

std::ranges::contains

July 2022

ranges

P2322R6

LWG

ranges::fold

July 2022

ranges

P2374R4

LWG

views::cartesian_product

July 2022

ranges

P2404R3

LWG

Move-only types for equality_comparable_with, totally_ordered_with, and three_way_comparable_with

July 2022

P2408R5

LWG

Ranges iterators as inputs to non-Ranges algorithms

July 2022

ranges

P2417R2

LWG

A more constexpr bitset

July 2022

Complete

16.0

P2419R2

LWG

Clarify handling of encodings in localized formatting of chrono types

July 2022

P2438R2

LWG

std::string::substr() &&

July 2022

Complete

16.0

P2445R1

LWG

forward_like

July 2022

Complete

16.0

P2446R2

LWG

views::as_rvalue

July 2022

Complete

16.0

ranges

P2460R2

LWG

Relax requirements on wchar_t to match existing practices

July 2022

P2465R3

LWG

Standard Library Modules std and std.compat

July 2022

P2467R1

LWG

Support exclusive mode for fstreams

July 2022

P2474R2

LWG

views::repeat

July 2022

Complete

17.0

ranges

P2494R2

LWG

Relaxing range adaptors to allow for move only types

July 2022

Complete

17.0

ranges

P2499R0

LWG

string_view range constructor should be explicit

July 2022

Complete

16.0

ranges

P2502R2

LWG

std::generator: Synchronous Coroutine Generator for Ranges

July 2022

ranges

P2508R1

LWG

Exposing std::basic-format-string

July 2022

Complete

15.0

P2513R4

LWG

char8_t Compatibility and Portability Fixes

July 2022

P2517R1

LWG

Add a conditional noexcept specification to std::apply

July 2022

P2520R0

LWG

move_iterator should be a random access iterator

July 2022

Complete [4]

17.0

ranges

P2540R1

LWG

Empty Product for certain Views

July 2022

ranges

P2549R1

LWG

std::unexpected should have error() as member accessor

July 2022

Complete

16.0

P2553R1

LWG

Make mdspan size_type controllable

July 2022

P2554R0

LWG

C-Array Interoperability of MDSpan

July 2022

P2585R0

LWG

Improving default container formatting

July 2022

Complete

17.0

P2590R2

LWG

Explicit lifetime management

July 2022

P2599R2

LWG

mdspan::size_type should be index_type

July 2022

P2604R0

LWG

mdspan: rename pointer and contiguous

July 2022

P2613R1

LWG

Add the missing empty to mdspan

July 2022

P1202R5

LWG

Asymmetric Fences

November 2022

concurrency TS

P1264R2

LWG

Revising the wording of stream input operations

November 2022

Complete

9.0

P1478R8

LWG

Byte-wise atomic memcpy

November 2022

concurrency TS

P2167R3

LWG

Improved Proposed Wording for LWG 2114

November 2022

P2396R1

LWG

Concurrency TS 2 fixes

November 2022

concurrency TS

P2505R5

LWG

Monadic Functions for std::expected

November 2022

Complete

17.0

P2539R4

LWG

Should the output of std::print to a terminal be synchronized with the underlying stream?

November 2022

In Progress

format

P2602R2

LWG

Poison Pills are Too Toxic

November 2022

ranges

P2708R1

LWG

No Further Fundamentals TSes

November 2022

Nothing To Do

P0290R4

LWG

apply() for synchronized_value<T>

February 2023

concurrency TS

P2770R0

LWG

Stashing stashing iterators for proper flattening

February 2023

ranges

P2164R9

LWG

views::enumerate

February 2023

ranges

P2711R1

LWG

Making multi-param constructors of views explicit

February 2023

Partial [5]

ranges

P2609R3

LWG

Relaxing Ranges Just A Smidge

February 2023

ranges

P2713R1

LWG

Escaping improvements in std::format

February 2023

format

P2675R1

LWG

format’s width estimation is too approximate and not forward compatible

February 2023

Complete

17.0

format

P2572R1

LWG

std::format fill character allowances

February 2023

Complete

17.0

format

P2693R1

LWG

Formatting thread::id and stacktrace

February 2023

Partial [6]

format

P2679R2

LWG

Fixing std::start_lifetime_as for arrays

February 2023

P2674R1

LWG

A trait for implicit lifetime types

February 2023

P2655R3

LWG

common_reference_t of reference_wrapper Should Be a Reference Type

February 2023

P2652R2

LWG

Disallow User Specialization of allocator_traits

February 2023

P2787R1

LWG

pmr::generator - Promise Types are not Values

February 2023

P2614R2

LWG

Deprecate numeric_limits::has_denorm

February 2023

P2588R3

LWG

barrier’s phase completion guarantees

February 2023

P2763R1

LWG

layout_stride static extents default constructor fix

February 2023

P2736R2

CWG

Referencing The Unicode Standard

February 2023

format

Note

Library Working Group Issues Status

Issue #

Issue Name

Meeting

Status

First released version

Labels

2839

Self-move-assignment of library types, again

November 2020

Nothing To Do

3117

Missing packaged_task deduction guides

November 2020

Complete

16.0

3143

monotonic_buffer_resource growth policy is unclear

November 2020

3195

What is the stored pointer value of an empty weak_ptr?

November 2020

Nothing To Do

3211

std::tuple<> should be trivially constructible

November 2020

Complete

9.0

3236

Random access iterator requirements lack limiting relational operators domain to comparing those from the same range

November 2020

Nothing To Do

3265

move_iterator’s conversions are more broken after P1207

November 2020

Fixed by LWG3435

3435

three_way_comparable_with<reverse_iterator<int*>, reverse_iterator<const int*>>

November 2020

Complete

13.0

3432

Missing requirement for comparison_category

November 2020

Complete

16.0

spaceship

3447

Deduction guides for take_view and drop_view have different constraints

November 2020

Complete

14.0

ranges

3450

The const overloads of take_while_view::begin/end are underconstrained

November 2020

Complete

16.0

ranges

3464

istream::gcount() can overflow

November 2020

2731

Existence of lock_guard<MutexTypes...>::mutex_type typedef unclear

November 2020

Complete

5.0

2743

P0083R3 node_handle private members missing “exposition only” comment

November 2020

Nothing To Do

2820

Clarify <cstdint> macros

November 2020

Nothing To Do

3120

Unclear behavior of monotonic_buffer_resource::release()

November 2020

3170

is_always_equal added to std::allocator makes the standard library treat derived types as always equal

November 2020

3036

polymorphic_allocator::destroy is extraneous

November 2020

3171

LWG2989 breaks directory_entry stream insertion

November 2020

Complete

14.0

3306

ranges::advance violates its preconditions

November 2020

Complete

14.0

ranges

3403

Domain of ranges::ssize(E) doesn’t match ranges::size(E)

November 2020

ranges

3404

Finish removing subrange’s conversions from pair-like

November 2020

ranges

3405

common_view’s converting constructor is bad, too

November 2020

Complete

14.0

ranges

3406

elements_view::begin() and elements_view::end() have incompatible constraints

November 2020

Complete

16.0

ranges

3419

[algorithms.requirements]/15 doesn’t reserve as many rights as it intends to

November 2020

Nothing To Do

3420

cpp17-iterator should check that the type looks like an iterator first

November 2020

Complete

14.0

ranges

3421

Imperfect ADL emulation for boolean-testable

November 2020

Nothing To Do

ranges

3425

condition_variable_any fails to constrain its Lock parameters

November 2020

Nothing To Do

3426

operator<=>(const unique_ptr<T, D>&, nullptr_t) can’t get no satisfaction

November 2020

Complete

16.0

spaceship

3427

operator<=>(const shared_ptr<T>&, nullptr_t) definition ill-formed

November 2020

Complete

16.0

spaceship

3428

single_view’s in place constructor should be explicit

November 2020

Complete

14.0

ranges

3434

ios_base never reclaims memory for iarray and parray

November 2020

Nothing To Do

3437

__cpp_lib_polymorphic_allocator is in the wrong header

November 2020

Complete

14.0

3446

indirectly_readable_traits ambiguity for types with both value_type and element_type

November 2020

Complete

14.0

ranges

3448

transform_view’s sentinel<false> not comparable with iterator<true>

November 2020

ranges

3449

take_view and take_while_view’s sentinel<false> not comparable with their const iterator

November 2020

Complete

16.0

ranges

3453

Generic code cannot call ranges::advance(i, s)

November 2020

Nothing To Do

ranges

3455

Incorrect Postconditions on unique_ptr move assignment

November 2020

Nothing To Do

3460

Unimplementable noop_coroutine_handle guarantees

November 2020

Complete

14.0

3461

convertible_to’s description mishandles cv-qualified void

November 2020

Nothing To Do

3465

compare_partial_order_fallback requires F < E

November 2020

Complete

14.0

spaceship

3466

Specify the requirements for promise/future/shared_future consistently

November 2020

Nothing To Do

3467

bool can’t be an integer-like type

November 2020

Complete

14.0

ranges

3472

counted_iterator is missing preconditions

November 2020

Complete

14.0

ranges

3473

Normative encouragement in non-normative note

November 2020

Complete

15.0

format

3474

Nesting join_views is broken because of CTAD

November 2020

Complete

15.0

ranges

3476

thread and jthread constructors require that the parameters be move-constructible but never move construct the parameters

November 2020

3477

Simplify constraints for semiregular-box

November 2020

ranges

3482

drop_view’s const begin should additionally require sized_range

November 2020

Complete

14.0

ranges

3483

transform_view::iterator’s difference is overconstrained

November 2020

Complete

14.0

ranges

3391

Problems with counted_iterator/move_iterator::base() const &

February 2021

ranges

3433

subrange::advance(n) has UB when n < 0

February 2021

Complete

14.0

ranges

3490

ranges::drop_while_view::begin() is missing a precondition

February 2021

Nothing To Do

ranges

3492

Minimal improvements to elements_view::iterator

February 2021

Complete

16.0

ranges

3494

Allow ranges to be conditionally borrowed

February 2021

Superseded by P2017R1

ranges

3495

constexpr launder makes pointers to inactive members of unions usable

February 2021

Nothing To Do

3500

join_view::iterator::operator->() is bogus

February 2021

Complete

14.0

ranges

3502

elements_view should not be allowed to return dangling reference

February 2021

Complete

16.0

ranges

3505

split_view::outer-iterator::operator++ misspecified

February 2021

ranges

2774

std::function construction vs assignment

June 2021

2818

::std:: everywhere rule needs tweaking

June 2021

Nothing To Do

2997

LWG 491 and the specification of {forward_,}list::unique

June 2021

3410

lexicographical_compare_three_way is overspecified

June 2021

Complete

17.0

spaceship

3430

std::fstream & co. should be constructible from string_view

June 2021

3462

§[formatter.requirements]: Formatter requirements forbid use of fc.arg()

June 2021

format

3481

viewable_range mishandles lvalue move-only views

June 2021

Superseded by P2415R2

ranges

3506

Missing allocator-extended constructors for priority_queue

June 2021

Complete

14.0

3517

join_view::iterator’s iter_swap is underconstrained

June 2021

Complete

14.0

ranges

3518

Exception requirements on char trait operations unclear

June 2021

Nothing To Do

3519

Incomplete synopses for <random> classes

June 2021

3520

iter_move and iter_swap are inconsistent for transform_view::iterator

June 2021

Complete

14.0

ranges

3521

Overly strict requirements on qsort and bsearch

June 2021

Nothing To Do

3522

Missing requirement on InputIterator template parameter for priority_queue constructors

June 2021

Complete

14.0

3523

iota_view::sentinel is not always iota_view’s sentinel

June 2021

ranges

3526

Return types of uses_allocator_construction_args unspecified

June 2021

3527

uses_allocator_construction_args handles rvalue pairs of rvalue references incorrectly

June 2021

3528

make_from_tuple can perform (the equivalent of) a C-style cast

June 2021

3529

priority_queue(first, last) should construct c with (first, last)

June 2021

Complete

14.0

3530

BUILTIN-PTR-MEOW should not opt the type out of syntactic checks

June 2021

3532

split_view<V, P>::inner-iterator<true>::operator++(int) should depend on Base

June 2021

ranges

3533

Make base() const & consistent across iterator wrappers that supports input_iterators

June 2021

Complete

14.0

ranges

3536

Should chrono::from_stream() assign zero to duration for failure?

June 2021

chrono

3539

format_to must not copy models of output_iterator<const charT&>

June 2021

Complete

14.0

format

3540

§[format.arg] There should be no const in basic_format_arg(const T* p)

June 2021

Complete

14.0

format

3541

indirectly_readable_traits should be SFINAE-friendly for all types

June 2021

Complete

14.0

ranges

3542

basic_format_arg mishandles basic_string_view with custom traits

June 2021

Complete

14.0

format

3543

Definition of when counted_iterators refer to the same sequence isn’t quite right

June 2021

Nothing To Do

ranges

3544

format-arg-store::args is unintentionally not exposition-only

June 2021

Complete

14.0

format

3546

common_iterator’s postfix-proxy is not quite right

June 2021

ranges

3548

shared_ptr construction from unique_ptr should move (not copy) the deleter

June 2021

Complete

15.0

3549

view_interface is overspecified to derive from view_base

June 2021

Complete

14.0

ranges

3551

borrowed_{iterator,subrange}_t are overspecified

June 2021

Nothing To Do

ranges

3552

Parallel specialized memory algorithms should require forward iterators

June 2021

3553

Useless constraint in split_view::outer-iterator::value_type::begin()

June 2021

ranges

3555

{transform,elements}_view::iterator::iterator_concept should consider const-qualification of the underlying range

June 2021

ranges

2191

Incorrect specification of match_results(match_results&&)

October 2021

Nothing To Do

2381

Inconsistency in parsing floating point numbers

October 2021

2762

unique_ptr operator*() should be noexcept

October 2021

3121

tuple constructor constraints for UTypes&&... overloads

October 2021

3123

duration constructor from representation shouldn’t be effectively non-throwing

October 2021

chrono

3146

Excessive unwrapping in std::ref/cref

October 2021

Complete

14.0

3152

common_type and common_reference have flaws in common

October 2021

3293

move_iterator operator+() has incorrect constraints

October 2021

Complete

15.0

3361

safe_range<SomeRange&> case

October 2021

Nothing To Do

ranges

3392

ranges::distance() cannot be used on a move-only iterator with a sized sentinel

October 2021

Complete

14.0

ranges

3407

Some problems with the wording changes of P1739R4

October 2021

Complete

15.0

ranges

3422

Issues of seed_seq’s constructors

October 2021

Complete

14.0

3470

convertible-to-non-slicing seems to reject valid case

October 2021

Complete

14.0

ranges

3480

directory_iterator and recursive_directory_iterator are not C++20 ranges

October 2021

Complete

14.0

ranges

3498

Inconsistent noexcept-specifiers for basic_syncbuf

October 2021

3535

join_view::iterator::iterator_category and ::iterator_concept lie

October 2021

Complete

15.0

ranges

3554

chrono::parse needs const charT* and basic_string_view<charT> overloads

October 2021

chrono

3557

The static_cast expression in convertible_to has the wrong operand

October 2021

Complete

14.0

3559

Semantic requirements of sized_range is circular

October 2021

Nothing To Do

ranges

3560

ranges::equal and ranges::is_permutation should short-circuit for sized_ranges

October 2021

ranges

3561

Issue with internal counter in discard_block_engine

October 2021

3563

keys_view example is broken

October 2021

ranges

3566

Constraint recursion for operator<=>(optional<T>, U)

October 2021

Complete

17.0

spaceship

3567

Formatting move-only iterators take two

October 2021

Complete

16.0

format ranges

3568

basic_istream_view needs to initialize value_

October 2021

Complete

16.0

ranges

3570

basic_osyncstream::emit should be an unformatted output function

October 2021

3571

flush_emit should set badbit if the emit call fails

October 2021

3572

copyable-box should be fully constexpr

October 2021

Complete

14.0

ranges

3573

Missing Throws element for basic_string_view(It begin, End end)

October 2021

Complete

14.0

3574

common_iterator should be completely constexpr-able

October 2021

Complete

14.0

ranges

3580

iota_view’s iterator’s binary operator+ should be improved

October 2021

Complete

14.0

ranges

3581

The range constructor makes basic_string_view not trivially move constructible

October 2021

Complete

14.0

ranges

3585

variant converting assignment with immovable alternative

October 2021

3589

The const lvalue reference overload of get for subrange does not constrain I to be copyable when N == 0

October 2021

Complete

14.0

ranges

3590

split_view::base() const & is overconstrained

October 2021

Complete

16.0

ranges

3591

lazy_split_view<input_view>::inner-iterator::base() && invalidates outer iterators

October 2021

ranges

3592

lazy_split_view needs to check the simpleness of Pattern

October 2021

ranges

3593

Several iterators’ base() const & and lazy_split_view::outer-iterator::value_type::end() missing noexcept

October 2021

ranges

3595

Exposition-only classes proxy and postfix-proxy for common_iterator should be fully constexpr

October 2021

Complete

14.0

ranges

3088

forward_list::merge behaviour unclear when passed *this

February 2022

3471

polymorphic_allocator::allocate does not satisfy Cpp17Allocator requirements

February 2022

3525

uses_allocator_construction_args fails to handle types convertible to pair

February 2022

3598

system_category().default_error_condition(0) is underspecified

February 2022

3601

common_iterator’s postfix-proxy needs indirectly_readable

February 2022

ranges

3607

contiguous_iterator should not be allowed to have custom iter_move and iter_swap behavior

February 2022

Nothing To Do

ranges

3610

iota_view::size sometimes rejects integer-class types

February 2022

ranges

3612

Inconsistent pointer alignment in std::format

February 2022

Complete

14.0

format

3616

LWG 3498 seems to miss the non-member swap for basic_syncbuf

February 2022

3618

Unnecessary iter_move for transform_view::iterator

February 2022

ranges

3619

Specification of vformat_to contains ill-formed formatted_size calls

February 2022

Nothing To Do

format

3621

Remove feature-test macro __cpp_lib_monadic_optional

February 2022

Complete

15.0

3632

unique_ptr “Mandates: This constructor is not selected by class template argument deduction”

February 2022

Nothing To Do

3643

Missing constexpr in std::counted_iterator

February 2022

ranges

3648

format should not print bool with 'c'

February 2022

Complete

15.0

format

3649

[fund.ts.v2] Reinstate and bump __cpp_lib_experimental_memory_resource feature test macro

February 2022

3650

Are std::basic_string ‘s iterator and const_iterator constexpr iterators?

February 2022

Nothing To Do

3654

basic_format_context::arg(size_t) should be noexcept

February 2022

Complete

15.0

format

3657

std::hash<std::filesystem::path> is not enabled

February 2022

Complete

17.0

3660

iterator_traits<common_iterator>::pointer should conform to §[iterator.traits]

February 2022

Complete

14.0

ranges

3661

constinit atomic<shared_ptr<T>> a(nullptr); should work

February 2022

3564

transform_view::iterator<true>::value_type and iterator_category should use const F&

July 2022

ranges

3617

function/packaged_task deduction guides and deducing this

July 2022

3656

Inconsistent bit operations returning a count

July 2022

Complete

15.0

3659

Consider ATOMIC_FLAG_INIT undeprecation

July 2022

Complete

15.0

3670

Cpp17InputIterators don’t have integer-class difference types

July 2022

ranges

3671

atomic_fetch_xor missing from stdatomic.h

July 2022

3672

common_iterator::operator->() should return by value

July 2022

ranges

3683

operator== for polymorphic_allocator cannot deduce template argument in common cases

July 2022

3687

expected<cv void, E> move constructor should move

July 2022

Complete

16.0

3692

zip_view::iterator’s operator<=> is overconstrained

July 2022

ranges spaceship

3701

Make formatter<remove_cvref_t<const charT[N]>, charT> requirement explicit

July 2022

format

3702

Should zip_transform_view::iterator remove operator<

July 2022

ranges spaceship

3703

Missing requirements for expected<T, E> requires is_void<T>

July 2022

Complete

16.0

3704

LWG 2059 added overloads that might be ill-formed for sets

July 2022

3705

Hashability shouldn’t depend on basic_string’s allocator

July 2022

Complete

16.0

3707

chunk_view::outer-iterator::value_type::size should return unsigned type

July 2022

ranges

3708

take_while_view::sentinel’s conversion constructor should move

July 2022

Complete

16.0

ranges

3709

LWG-3703 was underly ambitious

July 2022

3710

The end of chunk_view for input ranges can be const

July 2022

ranges

3711

Missing preconditions for slide_view constructor

July 2022

ranges

3712

chunk_view and slide_view should not be default_initializable

July 2022

ranges

3713

Sorted with respect to comparator (only)

July 2022

3715

view_interface::empty is overconstrained

July 2022

ranges

3719

Directory iterators should be usable with default sentinel

July 2022

Complete

17.0

ranges

3721

Allow an arg-id with a value of zero for width in std-format-spec

July 2022

Complete

16.0

format

3724

decay-copy should be constrained

July 2022

Complete

14.0

3028

Container requirements tables should distinguish const and non-const variables

November 2022

3118

fpos equality comparison unspecified

November 2022

3177

Limit permission to specialize variable templates to program-defined types

November 2022

Nothing To Do

3515

§[stacktrace.basic.nonmem]: operator<< should be less templatized

November 2022

3545

std::pointer_traits should be SFINAE-friendly

November 2022

3569

join_view fails to support ranges of ranges with non-default_initializable iterators

November 2022

ranges

3594

inout_ptr — inconsistent release() in destructor

November 2022

3597

Unsigned integer types don’t model advanceable

November 2022

ranges

3600

Making istream_iterator copy constructor trivial is an ABI break

November 2022

3629

make_error_code and make_error_condition are customization points

November 2022

Complete

16.0

3636

formatter<T>::format should be const-qualified

November 2022

Complete

16.0

format

3646

std::ranges::view_interface::size returns a signed type

November 2022

Complete

16.0

ranges

3677

Is a cv-qualified pair specially handled in uses-allocator construction?

November 2022

3717

common_view::end should improve random_access_range case

November 2022

ranges

3732

prepend_range and append_range can’t be amortized constant time

November 2022

Nothing To Do

ranges

3736

move_iterator missing disable_sized_sentinel_for specialization

November 2022

ranges

3737

take_view::sentinel should provide operator-

November 2022

ranges

3738

Missing preconditions for take_view constructor

November 2022

Complete

16.0

ranges

3743

ranges::to’s reserve may be ill-formed

November 2022

ranges

3745

std::atomic_wait and its friends lack noexcept

November 2022

Complete

16.0

3746

optional’s spaceship with U with a type derived from optional causes infinite constraint meta-recursion

November 2022

Complete

17.0

spaceship

3747

ranges::uninitialized_copy_n, ranges::uninitialized_move_n, and ranges::destroy_n should use std::move

November 2022

ranges

3750

Too many papers bump __cpp_lib_format

November 2022

Partial [7]

format

3751

Missing feature macro for flat_set

November 2022

flat containers

3753

Clarify entity vs. freestanding entity

November 2022

3754

Class template expected synopsis contains declarations that do not match the detailed description

November 2022

Nothing To Do

3755

tuple-for-each can call user-defined operator,

November 2022

Complete

17.0

3757

What’s the effect of std::forward_like<void>(x)?

November 2022

3759

ranges::rotate_copy should use std::move

November 2022

Complete

15.0

ranges

3760

cartesian_product_view::iterator’s parent_ is never valid

November 2022

ranges

3761

cartesian_product_view::iterator::operator- should pass by reference

November 2022

ranges

3762

generator::iterator::operator== should pass by reference

November 2022

3764

reference_wrapper::operator() should propagate noexcept

November 2022

17.0

Complete

3765

const_sentinel should be constrained

November 2022

ranges

3766

view_interface::cbegin is underconstrained

November 2022

ranges

3770

const_sentinel_t is missing

November 2022

ranges

3773

views::zip_transform still requires F to be copy_constructible when empty pack

November 2022

ranges

3774

<flat_set> should include <compare>

November 2022

flat containers

3775

Broken dependencies in the Cpp17Allocator requirements

November 2022

3778

vector<bool> missing exception specifications

November 2022

3781

The exposition-only alias templates cont-key-type and cont-mapped-type should be removed

November 2022

Nothing To Do

3782

Should <math.h> declare ::lerp?

November 2022

Complete

17.0

3784

std.compat should not provide ::byte and its friends

November 2022

3785

ranges::to is over-constrained on the destination type being a range

November 2022

ranges

3788

jthread::operator=(jthread&&) postconditions are unimplementable under self-assignment

November 2022

3792

__cpp_lib_constexpr_algorithms should also be defined in <utility>

November 2022

Complete

16.0

3795

Self-move-assignment of std::future and std::shared_future have unimplementable postconditions

November 2022

3796

movable-box as member should use default-initialization instead of copy-initialization

November 2022

ranges

3798

Rvalue reference and iterator_category

November 2022

Partial [8]

ranges

3801

cartesian_product_view::iterator::distance-from ignores the size of last underlying range

November 2022

ranges

3814

Add freestanding items requested by NB comments

November 2022

3816

flat_map and flat_multimap should impose sequence container requirements

November 2022

flat containers

3817

Missing preconditions on forward_list modifiers

November 2022

3818

Exposition-only concepts are not described in library intro

November 2022

Nothing To Do

3822

Avoiding normalization in filesystem::weakly_canonical

November 2022

3823

Unnecessary precondition for is_aggregate

November 2022

3824

Number of bind placeholders is underspecified

November 2022

Nothing To Do

3826

Redundant specification [for overload of yield_value]

November 2022

2195

Missing constructors for match_results

February 2023

2295

Locale name when the provided Facet is a nullptr

February 2023

3032

ValueSwappable requirement missing for push_heap and make_heap

February 2023

3085

char_traits::copy precondition too weak

February 2023

3664

LWG 3392 broke std::ranges::distance(a, a+3)

February 2023

ranges

3720

Restrict the valid types of arg-id for width and precision in std-format-spec

February 2023

Complete

17.0

format

3756

Is the std::atomic_flag class signal-safe?

February 2023

3769

basic_const_iterator::operator== causes infinite constraint recursion

February 2023

spaceship

3807

The feature test macro for ranges::find_last should be renamed

February 2023

ranges

3811

views::as_const on ref_view<T> should return ref_view<const T>

February 2023

ranges

3820

cartesian_product_view::iterator::prev is not quite right

February 2023

ranges

3825

Missing compile-time argument id check in basic_format_parse_context::next_arg_id

February 2023

Complete

17.0

format

3204

sub_match::swap only swaps the base class

February 2023

Complete

17.0

3733

ranges::to misuses cpp17-input-iterator

February 2023

Complete

17.0

ranges

3742

deque::prepend_range needs to permute

February 2023

ranges

3790

P1467 accidentally changed nexttoward’s signature

February 2023

3819

reference_meows_from_temporary should not use is_meowible

February 2023

3821

uses_allocator_construction_args should have overload for pair-like

February 2023

3834

Missing constexpr for std::intmax_t math functions in <cinttypes>

February 2023

3839

range_formatter’s set_separator, set_brackets, and underlying functions should be noexcept

February 2023

Complete

17.0

format

3841

<version> should not be “all freestanding”

February 2023

3842

Unclear wording for precision in chrono-format-spec

February 2023

Complete

16.0

format

3848

adjacent_view, adjacent_transform_view and slide_view missing base accessor

February 2023

ranges

3849

cartesian_product_view::iterator’s default constructor is overconstrained

February 2023

ranges

3850

views::as_const on empty_view<T> should return empty_view<const T>

February 2023

ranges

3851

chunk_view::inner-iterator missing custom iter_move and iter_swap

February 2023

ranges

3853

basic_const_iterator<volatile int*>::operator-> is ill-formed

February 2023

3857

basic_string_view should allow explicit conversion when only traits vary

February 2023

Complete

17.0

3860

range_common_reference_t is missing

February 2023

Complete

17.0

ranges

3866

Bad Mandates for expected::transform_error overloads

February 2023

Complete

17.0

3867

Should std::basic_osyncstream’s move assignment operator be noexcept?

February 2023

3441

Misleading note about calls to customization points

February 2023

3622

Misspecified transitivity of equivalence in §[unord.req.general]

February 2023

3631

basic_format_arg(T&&) should use remove_cvref_t<T> throughout

February 2023

Complete

17.0

3645

resize_and_overwrite is overspecified to call its callback with lvalues

February 2023

Complete

14.0

3655

The INVOKE operation and union types

February 2023

3723

priority_queue::push_range needs to append_range

February 2023

ranges

3734

Inconsistency in inout_ptr and out_ptr for empty case

February 2023

3772

repeat_view’s piecewise constructor is missing Postconditions

February 2023

ranges

3786

Flat maps’ deduction guide needs to default Allocator to be useful

February 2023

3803

flat_foo constructors taking KeyContainer lack KeyCompare parameter

February 2023

3810

CTAD for std::basic_format_args

February 2023

Complete

17.0

format

3827

Deprecate <stdalign.h> and <stdbool.h> macros

February 2023

3828

Sync intmax_t and uintmax_t with C2x

February 2023

3833

Remove specialization template<size_t N> struct formatter<const charT[N], charT>

February 2023

Complete

17.0

format

3836

std::expected<bool, E1> conversion constructor expected(const expected<U, G>&) should take precedence over expected(U&&) with operator bool

February 2023

3843

std::expected<T,E>::value() & assumes E is copy constructible

February 2023

Complete

17.0

3847

ranges::to can still return views

February 2023

Complete

17.0

ranges

3862

basic_const_iterator’s common_type specialization is underconstrained

February 2023

3865

Sorting a range of pairs

February 2023

Complete

17.0

ranges

3869

Deprecate std::errc constants related to UNIX STREAMS

February 2023

3870

Remove voidify

February 2023

3871

Adjust note about terminate

February 2023

3872

basic_const_iterator should have custom iter_move

February 2023

3875

std::ranges::repeat_view<T, IntegerClass>::iterator may be ill-formed

February 2023

Complete

17.0

ranges

3876

Default constructor of std::layout_XX::mapping misses precondition

February 2023

3877

Incorrect constraints on const-qualified monadic overloads for std::expected

February 2023

Complete

17.0

3878

import std; should guarantee initialization of standard iostreams objects

February 2023

3879

erase_if for flat_{,multi}set is incorrectly specified

February 2023

3880

Clarify operator+= complexity for {chunk,stride}_view::iterator

February 2023

ranges

3881

Incorrect formatting of container adapters backed by std::string

February 2023

Complete

17.0

format

Note