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 [1]    
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 In Progress   ranges
P1413R3 LWG Deprecate std::aligned_storage and std::aligned_union February 2022 Complete [2]    
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    
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      
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     ranges
P2494R2 LWG Relaxing range adaptors to allow for move only types July 2022     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 [3] 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     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 [4]   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 [5]   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

[1]P0533R9: isfinite, isinf, isnan and isnormal are implemented.
[2]P1413R3: std::aligned_storage_t and std::aligned_union_t are marked deprecated, but clang doesn’t issue a diagnostic for deprecated using template declarations.
[3]P2520R0: Libc++ implemented this paper as a DR in C++20 as well.
[4]P2711R1: join_with_view hasn’t been done yet since this type isn’t implemented yet.
[5]P1413R3: The formatter for std::thread::id is implemented. The formatter for stacktrace is not implemented, since stacktrace is not implemented yet.

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     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 [6]   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 [7]   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     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 15.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      
3847 ranges::to can still return views February 2023     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     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
           
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  
3892 Incorrect formatting of nested ranges and tuples Not Yet Adopted Complete 17.0  

Note

[6]LWG3750 Only __cpp_lib_format_ranges is fully implemented.
[7]LWG3798: join_with_view, zip_transform_view, and adjacent_transform_view haven’t been done yet since these types aren’t implemented yet.