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.

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

Notes

P0881R7

A Proposal to add stacktrace library

2020-11 (Virtual)

P0943R6

Support C atomics in C++

2020-11 (Virtual)

Complete

15.0

P1048R1

A proposal for a type trait to detect scoped enumerations

2020-11 (Virtual)

Complete

12.0

P1679R3

string contains function

2020-11 (Virtual)

Complete

12.0

P1682R3

std::to_underlying for enumerations

2021-02 (Virtual)

Complete

13.0

P2017R1

Conditionally borrowed ranges

2021-02 (Virtual)

Complete

16.0

P2160R1

Locks lock lockables

2021-02 (Virtual)

Nothing To Do

P2162R2

Inheriting from std::variant

2021-02 (Virtual)

Complete

13.0

P2212R2

Relax Requirements for time_point::clock

2021-02 (Virtual)

Nothing To Do

P2259R1

Repairing input range adaptors and counted_iterator

2021-02 (Virtual)

P0401R6

Providing size feedback in the Allocator interface

2021-06 (Virtual)

Complete

15.0

P0448R4

A strstream replacement using span<charT> as buffer

2021-06 (Virtual)

P1132R8

out_ptr - a scalable output pointer abstraction

2021-06 (Virtual)

Complete

19.0

P1328R1

Making std::type_info::operator== constexpr

2021-06 (Virtual)

Complete

17.0

P1425R4

Iterators pair constructors for stack and queue

2021-06 (Virtual)

Complete

14.0

P1518R2

Stop overconstraining allocators in container deduction guides

2021-06 (Virtual)

Complete

13.0

P1659R3

starts_with and ends_with

2021-06 (Virtual)

Complete

19.0

P1951R1

Default Arguments for pair Forwarding Constructor

2021-06 (Virtual)

Complete

14.0

P1989R2

Range constructor for std::string_view

2021-06 (Virtual)

Complete

14.0

P2136R3

invoke_r

2021-06 (Virtual)

Complete

17.0

P2166R1

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

2021-06 (Virtual)

Complete

13.0

P0288R9

any_invocable

2021-10 (Virtual)

P0798R8

Monadic operations for std::optional

2021-10 (Virtual)

Complete

14.0

P0849R8

auto(x): DECAY_COPY in the language

2021-10 (Virtual)

Complete

14.0

P1072R10

basic_string::resize_and_overwrite

2021-10 (Virtual)

Complete

14.0

P1147R1

Printing volatile Pointers

2021-10 (Virtual)

Complete

14.0

P1272R4

Byteswapping for fun&&nuf

2021-10 (Virtual)

Complete

14.0

P1675R2

rethrow_exception must be allowed to copy

2021-10 (Virtual)

Nothing To Do

P2077R3

Heterogeneous erasure overloads for associative containers

2021-10 (Virtual)

P2251R1

Require span & basic_string_view to be Trivially Copyable

2021-10 (Virtual)

Complete

14.0

P2301R1

Add a pmr alias for std::stacktrace

2021-10 (Virtual)

P2321R2

zip

2021-10 (Virtual)

In Progress

P2340R1

Clarifying the status of the ‘C headers’

2021-10 (Virtual)

Nothing To Do

P2393R1

Cleaning up integer-class types

2021-10 (Virtual)

P2401R0

Add a conditional noexcept specification to std::exchange

2021-10 (Virtual)

Complete

14.0

P0323R12

std::expected

2022-02 (Virtual)

Complete

16.0

P0533R9

constexpr for <cmath> and <cstdlib>

2022-02 (Virtual)

In Progress

isfinite, isinf, isnan and isnormal are implemented

P0627R6

Function to mark unreachable code

2022-02 (Virtual)

Complete

15.0

P1206R7

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

2022-02 (Virtual)

Complete

17.0

P1413R3

Deprecate std::aligned_storage and std::aligned_union

2022-02 (Virtual)

Complete

std::aligned_storage_t and std::aligned_union_t are marked deprecated, but clang doesn’t issue a diagnostic for deprecated using template declarations.

P2255R2

A type trait to detect reference binding to temporary

2022-02 (Virtual)

P2273R3

Making std::unique_ptr constexpr

2022-02 (Virtual)

Complete

16.0

P2387R3

Pipe support for user-defined range adaptors

2022-02 (Virtual)

Complete

19.0

P2440R1

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

2022-02 (Virtual)

P2441R2

views::join_with

2022-02 (Virtual)

In Progress

P2442R1

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

2022-02 (Virtual)

P2443R1

views::chunk_by

2022-02 (Virtual)

Complete

18.0

P0009R18

mdspan: A Non-Owning Multidimensional Array Reference

2022-07 (Virtual)

Complete

18.0

P0429R9

A Standard flat_map

2022-07 (Virtual)

P1169R4

static operator()

2022-07 (Virtual)

Complete

16.0

P1222R4

A Standard flat_set

2022-07 (Virtual)

P1223R5

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

2022-07 (Virtual)

Complete

19.0

P1467R9

Extended floating-point types and standard names

2022-07 (Virtual)

P1642R11

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

2022-07 (Virtual)

P1899R3

stride_view

2022-07 (Virtual)

P2093R14

Formatted output

2022-07 (Virtual)

Complete

18.0

P2165R4

Compatibility between tuple, pair and tuple-like objects

2022-07 (Virtual)

Partial

Only the part for zip_view is implemented.

P2278R4

cbegin should always return a constant iterator

2022-07 (Virtual)

P2286R8

Formatting Ranges

2022-07 (Virtual)

Complete

16.0

P2291R3

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

2022-07 (Virtual)

Complete

16.0

P2302R4

std::ranges::contains

2022-07 (Virtual)

Complete

19.0

P2322R6

ranges::fold

2022-07 (Virtual)

P2374R4

views::cartesian_product

2022-07 (Virtual)

P2404R3

Move-only types for equality_comparable_with, totally_ordered_with, and three_way_comparable_with

2022-07 (Virtual)

P2408R5

Ranges iterators as inputs to non-Ranges algorithms

2022-07 (Virtual)

P2417R2

A more constexpr bitset

2022-07 (Virtual)

Complete

16.0

P2419R2

Clarify handling of encodings in localized formatting of chrono types

2022-07 (Virtual)

P2438R2

std::string::substr() &&

2022-07 (Virtual)

Complete

16.0

P2445R1

forward_like

2022-07 (Virtual)

Complete

16.0

P2446R2

views::as_rvalue

2022-07 (Virtual)

Complete

16.0

P2460R2

Relax requirements on wchar_t to match existing practices

2022-07 (Virtual)

Nothing To Do

P2465R3

Standard Library Modules std and std.compat

2022-07 (Virtual)

Complete

19.0

P2467R1

Support exclusive mode for fstreams

2022-07 (Virtual)

Complete

18.0

P2474R2

views::repeat

2022-07 (Virtual)

Complete

17.0

P2494R2

Relaxing range adaptors to allow for move only types

2022-07 (Virtual)

Complete

17.0

P2499R0

string_view range constructor should be explicit

2022-07 (Virtual)

Complete

16.0

P2502R2

std::generator: Synchronous Coroutine Generator for Ranges

2022-07 (Virtual)

P2508R1

Exposing std::basic-format-string

2022-07 (Virtual)

Complete

15.0

P2513R4

char8_t Compatibility and Portability Fixes

2022-07 (Virtual)

P2517R1

Add a conditional noexcept specification to std::apply

2022-07 (Virtual)

Complete

3.9

P2520R0

move_iterator should be a random access iterator

2022-07 (Virtual)

Complete

17.0

Implemented as a DR in C++20

P2540R1

Empty Product for certain Views

2022-07 (Virtual)

P2549R1

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

2022-07 (Virtual)

Complete

16.0

P2585R0

Improving default container formatting

2022-07 (Virtual)

Complete

17.0

P2590R2

Explicit lifetime management

2022-07 (Virtual)

P2599R2

mdspan::size_type should be index_type

2022-07 (Virtual)

Complete

18.0

P2604R0

mdspan: rename pointer and contiguous

2022-07 (Virtual)

Complete

18.0

P2613R1

Add the missing empty to mdspan

2022-07 (Virtual)

Complete

18.0

P1202R5

Asymmetric Fences

2022-11 (Kona)

P1264R2

Revising the wording of stream input operations

2022-11 (Kona)

Complete

9.0

P1478R8

Byte-wise atomic memcpy

2022-11 (Kona)

P2167R3

Improved Proposed Wording for LWG 2114

2022-11 (Kona)

Complete

20.0

The [cmp.alg] part is implemented as a DR against C++20. MSVC STL does the same. Other parts are Nothing To Do.

P2396R1

Concurrency TS 2 fixes

2022-11 (Kona)

P2505R5

Monadic Functions for std::expected

2022-11 (Kona)

Complete

17.0

P2539R4

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

2022-11 (Kona)

Complete

18.0

P2602R2

Poison Pills are Too Toxic

2022-11 (Kona)

Complete

19.0

Implemented as a DR in C++20

P2708R1

No Further Fundamentals TSes

2022-11 (Kona)

Nothing To Do

P0290R4

apply() for synchronized_value<T>

2023-02 (Issaquah)

P2770R0

Stashing stashing iterators for proper flattening

2023-02 (Issaquah)

Partial

join_with_view hasn’t been done yet since this type isn’t implemented yet

P2164R9

views::enumerate

2023-02 (Issaquah)

P2711R1

Making multi-param constructors of views explicit

2023-02 (Issaquah)

In Progress

join_with_view hasn’t been done yet since this type isn’t implemented yet

P2609R3

Relaxing Ranges Just A Smidge

2023-02 (Issaquah)

Complete

20.0

Implemented as a DR in C++20. Other implementations will do the same.

P2713R1

Escaping improvements in std::format

2023-02 (Issaquah)

Complete

19.0

P2675R1

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

2023-02 (Issaquah)

Complete

17.0

P2572R1

std::format fill character allowances

2023-02 (Issaquah)

Complete

17.0

P2693R1

Formatting thread::id and stacktrace

2023-02 (Issaquah)

Partial

The formatter for stacktrace is not implemented, since stacktrace is not implemented yet

P2679R2

Fixing std::start_lifetime_as for arrays

2023-02 (Issaquah)

P2674R1

A trait for implicit lifetime types

2023-02 (Issaquah)

Complete

20.0

P2655R3

common_reference_t of reference_wrapper Should Be a Reference Type

2023-02 (Issaquah)

P2652R2

Disallow User Specialization of allocator_traits

2023-02 (Issaquah)

Complete

19.0

P2787R1

pmr::generator - Promise Types are not Values

2023-02 (Issaquah)

P2614R2

Deprecate numeric_limits::has_denorm

2023-02 (Issaquah)

Complete

18.0

P2588R3

barrier’s phase completion guarantees

2023-02 (Issaquah)

P2763R1

layout_stride static extents default constructor fix

2023-02 (Issaquah)

P2736R2

Referencing The Unicode Standard

2023-02 (Issaquah)

Complete

19.0

Library Working Group Issues Status

Issue #

Issue Name

Meeting

Status

First released version

Notes

LWG2839

Self-move-assignment of library types, again

2020-11 (Virtual)

Nothing To Do

LWG3117

Missing packaged_task deduction guides

2020-11 (Virtual)

Complete

16.0

LWG3143

monotonic_buffer_resource growth policy is unclear

2020-11 (Virtual)

LWG3195

What is the stored pointer value of an empty weak_ptr?

2020-11 (Virtual)

Nothing To Do

LWG3211

std::tuple<> should be trivially constructible

2020-11 (Virtual)

Complete

9.0

LWG3236

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

2020-11 (Virtual)

Nothing To Do

LWG3265

move_iterator’s conversions are more broken after P1207

2020-11 (Virtual)

Nothing To Do

Resolved by LWG3435

LWG3435

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

2020-11 (Virtual)

Complete

13.0

LWG3432

Missing requirement for comparison_category

2020-11 (Virtual)

Complete

16.0

LWG3447

Deduction guides for take_view and drop_view have different constraints

2020-11 (Virtual)

Complete

14.0

LWG3450

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

2020-11 (Virtual)

Complete

16.0

LWG3464

istream::gcount() can overflow

2020-11 (Virtual)

Complete

18.0

LWG2731

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

2020-11 (Virtual)

Complete

5.0

LWG2743

P0083R3 node_handle private members missing “exposition only” comment

2020-11 (Virtual)

Nothing To Do

LWG2820

Clarify <cstdint> macros

2020-11 (Virtual)

Nothing To Do

LWG3120

Unclear behavior of monotonic_buffer_resource::release()

2020-11 (Virtual)

LWG3170

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

2020-11 (Virtual)

Complete

18.0

LWG3036

polymorphic_allocator::destroy is extraneous

2020-11 (Virtual)

Nothing To Do

Reverted by P2875R4

LWG3171

LWG2989 breaks directory_entry stream insertion

2020-11 (Virtual)

Complete

14.0

LWG3306

ranges::advance violates its preconditions

2020-11 (Virtual)

Complete

14.0

LWG3403

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

2020-11 (Virtual)

LWG3404

Finish removing subrange’s conversions from pair-like

2020-11 (Virtual)

Complete

13.0

LWG3405

common_view’s converting constructor is bad, too

2020-11 (Virtual)

Complete

14.0

LWG3406

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

2020-11 (Virtual)

Complete

16.0

LWG3419

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

2020-11 (Virtual)

Nothing To Do

LWG3420

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

2020-11 (Virtual)

Complete

14.0

LWG3421

Imperfect ADL emulation for boolean-testable

2020-11 (Virtual)

Nothing To Do

LWG3425

condition_variable_any fails to constrain its Lock parameters

2020-11 (Virtual)

Nothing To Do

LWG3426

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

2020-11 (Virtual)

Complete

16.0

LWG3427

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

2020-11 (Virtual)

Complete

16.0

LWG3428

single_view’s in place constructor should be explicit

2020-11 (Virtual)

Complete

14.0

LWG3434

ios_base never reclaims memory for iarray and parray

2020-11 (Virtual)

Nothing To Do

LWG3437

__cpp_lib_polymorphic_allocator is in the wrong header

2020-11 (Virtual)

Complete

14.0

LWG3446

indirectly_readable_traits ambiguity for types with both value_type and element_type

2020-11 (Virtual)

Complete

14.0

LWG3448

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

2020-11 (Virtual)

LWG3449

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

2020-11 (Virtual)

Complete

16.0

LWG3453

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

2020-11 (Virtual)

Nothing To Do

LWG3455

Incorrect Postconditions on unique_ptr move assignment

2020-11 (Virtual)

Nothing To Do

LWG3460

Unimplementable noop_coroutine_handle guarantees

2020-11 (Virtual)

Complete

14.0

LWG3461

convertible_to’s description mishandles cv-qualified void

2020-11 (Virtual)

Nothing To Do

LWG3465

compare_partial_order_fallback requires F < E

2020-11 (Virtual)

Complete

14.0

LWG3466

Specify the requirements for promise/future/shared_future consistently

2020-11 (Virtual)

Nothing To Do

LWG3467

bool can’t be an integer-like type

2020-11 (Virtual)

Complete

14.0

LWG3472

counted_iterator is missing preconditions

2020-11 (Virtual)

Complete

14.0

LWG3473

Normative encouragement in non-normative note

2020-11 (Virtual)

Complete

15.0

LWG3474

Nesting join_views is broken because of CTAD

2020-11 (Virtual)

Complete

15.0

LWG3476

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

2020-11 (Virtual)

LWG3477

Simplify constraints for semiregular-box

2020-11 (Virtual)

Complete

13.0

LWG3482

drop_view’s const begin should additionally require sized_range

2020-11 (Virtual)

Complete

14.0

LWG3483

transform_view::iterator’s difference is overconstrained

2020-11 (Virtual)

Complete

14.0

LWG3391

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

2021-02 (Virtual)

LWG3433

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

2021-02 (Virtual)

Complete

14.0

LWG3490

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

2021-02 (Virtual)

Nothing To Do

LWG3492

Minimal improvements to elements_view::iterator

2021-02 (Virtual)

Complete

16.0

LWG3494

Allow ranges to be conditionally borrowed

2021-02 (Virtual)

Nothing To Do

Superseded by P2017R1

LWG3495

constexpr launder makes pointers to inactive members of unions usable

2021-02 (Virtual)

Nothing To Do

LWG3500

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

2021-02 (Virtual)

Complete

14.0

LWG3502

elements_view should not be allowed to return dangling reference

2021-02 (Virtual)

Complete

16.0

LWG3505

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

2021-02 (Virtual)

LWG2774

std::function construction vs assignment

2021-06 (Virtual)

LWG2818

::std:: everywhere rule needs tweaking

2021-06 (Virtual)

Nothing To Do

LWG2997

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

2021-06 (Virtual)

LWG3410

lexicographical_compare_three_way is overspecified

2021-06 (Virtual)

Complete

17.0

LWG3430

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

2021-06 (Virtual)

Complete

19.0

LWG3462

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

2021-06 (Virtual)

Nothing To Do

LWG3481

viewable_range mishandles lvalue move-only views

2021-06 (Virtual)

Nothing To Do

Superseded by P2415R2

LWG3506

Missing allocator-extended constructors for priority_queue

2021-06 (Virtual)

Complete

14.0

LWG3517

join_view::iterator’s iter_swap is underconstrained

2021-06 (Virtual)

Complete

14.0

LWG3518

Exception requirements on char trait operations unclear

2021-06 (Virtual)

Nothing To Do

LWG3519

Incomplete synopses for <random> classes

2021-06 (Virtual)

LWG3520

iter_move and iter_swap are inconsistent for transform_view::iterator

2021-06 (Virtual)

Complete

14.0

LWG3521

Overly strict requirements on qsort and bsearch

2021-06 (Virtual)

Nothing To Do

LWG3522

Missing requirement on InputIterator template parameter for priority_queue constructors

2021-06 (Virtual)

Complete

14.0

LWG3523

iota_view::sentinel is not always iota_view’s sentinel

2021-06 (Virtual)

Complete

17.0

LWG3526

Return types of uses_allocator_construction_args unspecified

2021-06 (Virtual)

LWG3527

uses_allocator_construction_args handles rvalue pairs of rvalue references incorrectly

2021-06 (Virtual)

LWG3528

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

2021-06 (Virtual)

Complete

19.0

LWG3529

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

2021-06 (Virtual)

Complete

14.0

LWG3530

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

2021-06 (Virtual)

LWG3532

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

2021-06 (Virtual)

LWG3533

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

2021-06 (Virtual)

Complete

14.0

LWG3536

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

2021-06 (Virtual)

LWG3539

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

2021-06 (Virtual)

Complete

14.0

LWG3540

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

2021-06 (Virtual)

Complete

14.0

LWG3541

indirectly_readable_traits should be SFINAE-friendly for all types

2021-06 (Virtual)

Complete

14.0

LWG3542

basic_format_arg mishandles basic_string_view with custom traits

2021-06 (Virtual)

Complete

14.0

LWG3543

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

2021-06 (Virtual)

Nothing To Do

LWG3544

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

2021-06 (Virtual)

Complete

14.0

LWG3546

common_iterator’s postfix-proxy is not quite right

2021-06 (Virtual)

LWG3548

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

2021-06 (Virtual)

Complete

15.0

LWG3549

view_interface is overspecified to derive from view_base

2021-06 (Virtual)

Complete

14.0

LWG3551

borrowed_{iterator,subrange}_t are overspecified

2021-06 (Virtual)

Nothing To Do

LWG3552

Parallel specialized memory algorithms should require forward iterators

2021-06 (Virtual)

LWG3553

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

2021-06 (Virtual)

LWG3555

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

2021-06 (Virtual)

LWG2191

Incorrect specification of match_results(match_results&&)

2021-10 (Virtual)

Nothing To Do

LWG2381

Inconsistency in parsing floating point numbers

2021-10 (Virtual)

Complete

19.0

LWG2762

unique_ptr operator*() should be noexcept

2021-10 (Virtual)

Complete

19.0

LWG3121

tuple constructor constraints for UTypes&&... overloads

2021-10 (Virtual)

LWG3123

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

2021-10 (Virtual)

LWG3146

Excessive unwrapping in std::ref/cref

2021-10 (Virtual)

Complete

14.0

LWG3152

common_type and common_reference have flaws in common

2021-10 (Virtual)

LWG3293

move_iterator operator+() has incorrect constraints

2021-10 (Virtual)

Complete

15.0

LWG3361

safe_range<SomeRange&> case

2021-10 (Virtual)

Nothing To Do

LWG3392

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

2021-10 (Virtual)

Complete

14.0

LWG3407

Some problems with the wording changes of P1739R4

2021-10 (Virtual)

Complete

15.0

LWG3422

Issues of seed_seq’s constructors

2021-10 (Virtual)

Complete

14.0

LWG3470

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

2021-10 (Virtual)

Complete

14.0

LWG3480

directory_iterator and recursive_directory_iterator are not C++20 ranges

2021-10 (Virtual)

Complete

14.0

LWG3498

Inconsistent noexcept-specifiers for basic_syncbuf

2021-10 (Virtual)

LWG3535

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

2021-10 (Virtual)

Complete

15.0

LWG3554

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

2021-10 (Virtual)

LWG3557

The static_cast expression in convertible_to has the wrong operand

2021-10 (Virtual)

Complete

14.0

LWG3559

Semantic requirements of sized_range is circular

2021-10 (Virtual)

Nothing To Do

LWG3560

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

2021-10 (Virtual)

LWG3561

Issue with internal counter in discard_block_engine

2021-10 (Virtual)

LWG3563

keys_view example is broken

2021-10 (Virtual)

LWG3566

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

2021-10 (Virtual)

Complete

17.0

LWG3567

Formatting move-only iterators take two

2021-10 (Virtual)

Complete

16.0

LWG3568

basic_istream_view needs to initialize value_

2021-10 (Virtual)

Complete

16.0

LWG3570

basic_osyncstream::emit should be an unformatted output function

2021-10 (Virtual)

Complete

18.0

LWG3571

flush_emit should set badbit if the emit call fails

2021-10 (Virtual)

LWG3572

copyable-box should be fully constexpr

2021-10 (Virtual)

Complete

14.0

LWG3573

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

2021-10 (Virtual)

Complete

14.0

LWG3574

common_iterator should be completely constexpr-able

2021-10 (Virtual)

Complete

14.0

LWG3580

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

2021-10 (Virtual)

Complete

14.0

LWG3581

The range constructor makes basic_string_view not trivially move constructible

2021-10 (Virtual)

Complete

14.0

LWG3585

variant converting assignment with immovable alternative

2021-10 (Virtual)

LWG3589

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

2021-10 (Virtual)

Complete

14.0

LWG3590

split_view::base() const & is overconstrained

2021-10 (Virtual)

Complete

16.0

LWG3591

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

2021-10 (Virtual)

LWG3592

lazy_split_view needs to check the simpleness of Pattern

2021-10 (Virtual)

LWG3593

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

2021-10 (Virtual)

LWG3595

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

2021-10 (Virtual)

Complete

14.0

LWG3088

forward_list::merge behaviour unclear when passed *this

2022-02 (Virtual)

LWG3471

polymorphic_allocator::allocate does not satisfy Cpp17Allocator requirements

2022-02 (Virtual)

LWG3525

uses_allocator_construction_args fails to handle types convertible to pair

2022-02 (Virtual)

LWG3598

system_category().default_error_condition(0) is underspecified

2022-02 (Virtual)

LWG3601

common_iterator’s postfix-proxy needs indirectly_readable

2022-02 (Virtual)

LWG3607

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

2022-02 (Virtual)

Nothing To Do

LWG3610

iota_view::size sometimes rejects integer-class types

2022-02 (Virtual)

LWG3612

Inconsistent pointer alignment in std::format

2022-02 (Virtual)

Complete

14.0

LWG3616

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

2022-02 (Virtual)

Complete

18.0

LWG3618

Unnecessary iter_move for transform_view::iterator

2022-02 (Virtual)

Complete

19.0

LWG3619

Specification of vformat_to contains ill-formed formatted_size calls

2022-02 (Virtual)

Nothing To Do

LWG3621

Remove feature-test macro __cpp_lib_monadic_optional

2022-02 (Virtual)

Complete

15.0

LWG3632

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

2022-02 (Virtual)

Nothing To Do

LWG3643

Missing constexpr in std::counted_iterator

2022-02 (Virtual)

Complete

19.0

LWG3648

format should not print bool with 'c'

2022-02 (Virtual)

Complete

15.0

LWG3649

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

2022-02 (Virtual)

LWG3650

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

2022-02 (Virtual)

Nothing To Do

LWG3654

basic_format_context::arg(size_t) should be noexcept

2022-02 (Virtual)

Complete

15.0

LWG3657

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

2022-02 (Virtual)

Complete

17.0

LWG3660

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

2022-02 (Virtual)

Complete

14.0

LWG3661

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

2022-02 (Virtual)

LWG3564

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

2022-07 (Virtual)

Complete

20.0

LWG3617

function/packaged_task deduction guides and deducing this

2022-07 (Virtual)

LWG3656

Inconsistent bit operations returning a count

2022-07 (Virtual)

Complete

15.0

LWG3659

Consider ATOMIC_FLAG_INIT undeprecation

2022-07 (Virtual)

Complete

15.0

LWG3670

Cpp17InputIterators don’t have integer-class difference types

2022-07 (Virtual)

LWG3671

atomic_fetch_xor missing from stdatomic.h

2022-07 (Virtual)

Complete

20.0

LWG3672

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

2022-07 (Virtual)

Complete

19.0

LWG3683

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

2022-07 (Virtual)

Complete

20.0

LWG3687

expected<cv void, E> move constructor should move

2022-07 (Virtual)

Complete

16.0

LWG3692

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

2022-07 (Virtual)

Complete

20.0

LWG3701

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

2022-07 (Virtual)

Complete

15.0

LWG3702

Should zip_transform_view::iterator remove operator<

2022-07 (Virtual)

LWG3703

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

2022-07 (Virtual)

Complete

16.0

LWG3704

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

2022-07 (Virtual)

LWG3705

Hashability shouldn’t depend on basic_string’s allocator

2022-07 (Virtual)

Complete

16.0

LWG3707

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

2022-07 (Virtual)

LWG3708

take_while_view::sentinel’s conversion constructor should move

2022-07 (Virtual)

Complete

16.0

LWG3709

LWG-3703 was underly ambitious

2022-07 (Virtual)

LWG3710

The end of chunk_view for input ranges can be const

2022-07 (Virtual)

LWG3711

Missing preconditions for slide_view constructor

2022-07 (Virtual)

LWG3712

chunk_view and slide_view should not be default_initializable

2022-07 (Virtual)

LWG3713

Sorted with respect to comparator (only)

2022-07 (Virtual)

Nothing To Do

LWG3715

view_interface::empty is overconstrained

2022-07 (Virtual)

Complete

19.0

LWG3719

Directory iterators should be usable with default sentinel

2022-07 (Virtual)

Complete

17.0

LWG3721

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

2022-07 (Virtual)

Complete

16.0

LWG3724

decay-copy should be constrained

2022-07 (Virtual)

Complete

14.0

LWG3028

Container requirements tables should distinguish const and non-const variables

2022-11 (Kona)

LWG3118

fpos equality comparison unspecified

2022-11 (Kona)

LWG3177

Limit permission to specialize variable templates to program-defined types

2022-11 (Kona)

Nothing To Do

LWG3515

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

2022-11 (Kona)

LWG3545

std::pointer_traits should be SFINAE-friendly

2022-11 (Kona)

Complete

18.0

LWG3569

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

2022-11 (Kona)

LWG3594

inout_ptr — inconsistent release() in destructor

2022-11 (Kona)

Complete

19.0

LWG3597

Unsigned integer types don’t model advanceable

2022-11 (Kona)

LWG3600

Making istream_iterator copy constructor trivial is an ABI break

2022-11 (Kona)

LWG3629

make_error_code and make_error_condition are customization points

2022-11 (Kona)

Complete

16.0

LWG3636

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

2022-11 (Kona)

Complete

16.0

LWG3646

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

2022-11 (Kona)

Complete

16.0

LWG3677

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

2022-11 (Kona)

Complete

18.0

LWG3717

common_view::end should improve random_access_range case

2022-11 (Kona)

LWG3732

prepend_range and append_range can’t be amortized constant time

2022-11 (Kona)

Nothing To Do

LWG3736

move_iterator missing disable_sized_sentinel_for specialization

2022-11 (Kona)

Complete

19.0

LWG3737

take_view::sentinel should provide operator-

2022-11 (Kona)

LWG3738

Missing preconditions for take_view constructor

2022-11 (Kona)

Complete

16.0

LWG3743

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

2022-11 (Kona)

LWG3745

std::atomic_wait and its friends lack noexcept

2022-11 (Kona)

Complete

16.0

LWG3746

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

2022-11 (Kona)

Complete

17.0

LWG3747

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

2022-11 (Kona)

LWG3750

Too many papers bump __cpp_lib_format

2022-11 (Kona)

Partial

Only __cpp_lib_format_ranges is fully implemented

LWG3751

Missing feature macro for flat_set

2022-11 (Kona)

LWG3753

Clarify entity vs. freestanding entity

2022-11 (Kona)

LWG3754

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

2022-11 (Kona)

Nothing To Do

LWG3755

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

2022-11 (Kona)

Complete

17.0

LWG3757

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

2022-11 (Kona)

LWG3759

ranges::rotate_copy should use std::move

2022-11 (Kona)

Complete

15.0

LWG3760

cartesian_product_view::iterator’s parent_ is never valid

2022-11 (Kona)

LWG3761

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

2022-11 (Kona)

LWG3762

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

2022-11 (Kona)

LWG3764

reference_wrapper::operator() should propagate noexcept

2022-11 (Kona)

Complete

17.0

LWG3765

const_sentinel should be constrained

2022-11 (Kona)

LWG3766

view_interface::cbegin is underconstrained

2022-11 (Kona)

LWG3770

const_sentinel_t is missing

2022-11 (Kona)

LWG3773

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

2022-11 (Kona)

LWG3774

<flat_set> should include <compare>

2022-11 (Kona)

LWG3775

Broken dependencies in the Cpp17Allocator requirements

2022-11 (Kona)

LWG3778

vector<bool> missing exception specifications

2022-11 (Kona)

Complete

3.7

LWG3781

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

2022-11 (Kona)

Nothing To Do

LWG3782

Should <math.h> declare ::lerp?

2022-11 (Kona)

Complete

17.0

LWG3784

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

2022-11 (Kona)

Complete

19.0

LWG3785

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

2022-11 (Kona)

LWG3788

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

2022-11 (Kona)

LWG3792

__cpp_lib_constexpr_algorithms should also be defined in <utility>

2022-11 (Kona)

Complete

16.0

LWG3795

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

2022-11 (Kona)

LWG3796

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

2022-11 (Kona)

LWG3798

Rvalue reference and iterator_category

2022-11 (Kona)

Partial

join_with_view, zip_transform_view, and adjacent_transform_view haven’t been done yet since these types aren’t implemented yet

LWG3801

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

2022-11 (Kona)

LWG3814

Add freestanding items requested by NB comments

2022-11 (Kona)

LWG3816

flat_map and flat_multimap should impose sequence container requirements

2022-11 (Kona)

LWG3817

Missing preconditions on forward_list modifiers

2022-11 (Kona)

LWG3818

Exposition-only concepts are not described in library intro

2022-11 (Kona)

Nothing To Do

LWG3822

Avoiding normalization in filesystem::weakly_canonical

2022-11 (Kona)

LWG3823

Unnecessary precondition for is_aggregate

2022-11 (Kona)

Nothing To Do

LWG3824

Number of bind placeholders is underspecified

2022-11 (Kona)

Nothing To Do

LWG3826

Redundant specification [for overload of yield_value]

2022-11 (Kona)

Nothing To Do

LWG2195

Missing constructors for match_results

2023-02 (Issaquah)

LWG2295

Locale name when the provided Facet is a nullptr

2023-02 (Issaquah)

LWG3032

ValueSwappable requirement missing for push_heap and make_heap

2023-02 (Issaquah)

LWG3085

char_traits::copy precondition too weak

2023-02 (Issaquah)

LWG3664

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

2023-02 (Issaquah)

LWG3720

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

2023-02 (Issaquah)

Complete

17.0

LWG3756

Is the std::atomic_flag class signal-safe?

2023-02 (Issaquah)

LWG3769

basic_const_iterator::operator== causes infinite constraint recursion

2023-02 (Issaquah)

LWG3807

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

2023-02 (Issaquah)

LWG3811

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

2023-02 (Issaquah)

LWG3820

cartesian_product_view::iterator::prev is not quite right

2023-02 (Issaquah)

LWG3825

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

2023-02 (Issaquah)

Complete

17.0

LWG3204

sub_match::swap only swaps the base class

2023-02 (Issaquah)

Complete

17.0

LWG3733

ranges::to misuses cpp17-input-iterator

2023-02 (Issaquah)

Complete

17.0

LWG3742

deque::prepend_range needs to permute

2023-02 (Issaquah)

LWG3790

P1467 accidentally changed nexttoward’s signature

2023-02 (Issaquah)

LWG3819

reference_meows_from_temporary should not use is_meowible

2023-02 (Issaquah)

LWG3821

uses_allocator_construction_args should have overload for pair-like

2023-02 (Issaquah)

Complete

18.0

LWG3834

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

2023-02 (Issaquah)

LWG3839

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

2023-02 (Issaquah)

Complete

17.0

LWG3841

<version> should not be “all freestanding”

2023-02 (Issaquah)

LWG3842

Unclear wording for precision in chrono-format-spec

2023-02 (Issaquah)

Complete

16.0

LWG3848

adjacent_view, adjacent_transform_view and slide_view missing base accessor

2023-02 (Issaquah)

LWG3849

cartesian_product_view::iterator’s default constructor is overconstrained

2023-02 (Issaquah)

LWG3850

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

2023-02 (Issaquah)

LWG3851

chunk_view::inner-iterator missing custom iter_move and iter_swap

2023-02 (Issaquah)

LWG3853

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

2023-02 (Issaquah)

LWG3857

basic_string_view should allow explicit conversion when only traits vary

2023-02 (Issaquah)

Complete

17.0

LWG3860

range_common_reference_t is missing

2023-02 (Issaquah)

Complete

17.0

LWG3866

Bad Mandates for expected::transform_error overloads

2023-02 (Issaquah)

Complete

17.0

LWG3867

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

2023-02 (Issaquah)

Complete

18.0

LWG3441

Misleading note about calls to customization points

2023-02 (Issaquah)

LWG3622

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

2023-02 (Issaquah)

LWG3631

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

2023-02 (Issaquah)

Complete

17.0

LWG3645

resize_and_overwrite is overspecified to call its callback with lvalues

2023-02 (Issaquah)

Complete

14.0

LWG3655

The INVOKE operation and union types

2023-02 (Issaquah)

Complete

18.0

LWG3723

priority_queue::push_range needs to append_range

2023-02 (Issaquah)

Complete

17.0

LWG3734

Inconsistency in inout_ptr and out_ptr for empty case

2023-02 (Issaquah)

Complete

19.0

LWG3772

repeat_view’s piecewise constructor is missing Postconditions

2023-02 (Issaquah)

Complete

17.0

LWG3786

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

2023-02 (Issaquah)

LWG3803

flat_foo constructors taking KeyContainer lack KeyCompare parameter

2023-02 (Issaquah)

LWG3810

CTAD for std::basic_format_args

2023-02 (Issaquah)

Complete

17.0

LWG3827

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

2023-02 (Issaquah)

LWG3828

Sync intmax_t and uintmax_t with C2x

2023-02 (Issaquah)

Nothing To Do

LWG3833

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

2023-02 (Issaquah)

Complete

17.0

LWG3836

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

2023-02 (Issaquah)

Complete

18.0

LWG3843

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

2023-02 (Issaquah)

Complete

17.0

LWG3847

ranges::to can still return views

2023-02 (Issaquah)

Complete

17.0

LWG3862

basic_const_iterator’s common_type specialization is underconstrained

2023-02 (Issaquah)

LWG3865

Sorting a range of pairs

2023-02 (Issaquah)

Complete

17.0

LWG3869

Deprecate std::errc constants related to UNIX STREAMS

2023-02 (Issaquah)

Complete

19.0

LWG3870

Remove voidify

2023-02 (Issaquah)

Complete

20.0

LWG3871

Adjust note about terminate

2023-02 (Issaquah)

LWG3872

basic_const_iterator should have custom iter_move

2023-02 (Issaquah)

LWG3875

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

2023-02 (Issaquah)

Complete

17.0

LWG3876

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

2023-02 (Issaquah)

LWG3877

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

2023-02 (Issaquah)

Complete

17.0

LWG3878

import std; should guarantee initialization of standard iostreams objects

2023-02 (Issaquah)

LWG3879

erase_if for flat_{,multi}set is incorrectly specified

2023-02 (Issaquah)

LWG3880

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

2023-02 (Issaquah)

LWG3881

Incorrect formatting of container adapters backed by std::string

2023-02 (Issaquah)

Complete

17.0