libc++ C++20 Status

Overview

In July 2017, the C++ standard committee created a draft for the next version of the C++ standard, initially known as “C++2a”. In September 2020, the C++ standard committee approved this draft, and sent it to ISO for approval as C++20.

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
P0463R1 LWG Endian just Endian Toronto Complete 7.0  
P0674R1 LWG Extending make_shared to Support Arrays Toronto Complete 15.0  
             
P0020R6 LWG Floating Point Atomic Albuquerque      
P0053R7 LWG C++ Synchronized Buffered Ostream Albuquerque      
P0202R3 LWG Add constexpr modifiers to functions in <algorithm> and <utility> Headers Albuquerque Complete 12.0  
P0415R1 LWG Constexpr for std::complex Albuquerque Complete 16.0  
P0439R0 LWG Make std::memory_order a scoped enumeration Albuquerque Complete    
P0457R2 LWG String Prefix and Suffix Checking Albuquerque Complete 6.0  
P0550R2 LWG Transformation Trait remove_cvref Albuquerque Complete 6.0  
P0600R1 LWG nodiscard in the Library Albuquerque Complete 16.0  
P0616R0 LWG de-pessimize legacy <numeric> algorithms with std::move Albuquerque Complete 12.0  
P0653R2 LWG Utility to convert a pointer to a raw pointer Albuquerque Complete 6.0  
P0718R2 LWG Atomic shared_ptr Albuquerque      
P0767R1 CWG Deprecate POD Albuquerque Complete 7.0  
P0768R1 CWG Library Support for the Spaceship (Comparison) Operator Albuquerque Complete    
P0777R1 LWG Treating Unnecessary decay Albuquerque Complete 7.0  
P0122R7 LWG <span> Jacksonville Complete 7.0  
P0355R7 LWG Extending chrono to Calendars and Time Zones Jacksonville In Progress    
P0551R3 LWG Thou Shalt Not Specialize std Function Templates! Jacksonville Complete 11.0  
P0753R2 LWG Manipulators for C++ Synchronized Buffered Ostream Jacksonville      
P0754R2 LWG <version> Jacksonville Complete 7.0  
P0809R0 LWG Comparing Unordered Containers Jacksonville Nothing To Do    
P0858R0 LWG Constexpr iterator requirements Jacksonville Complete 12.0  
P0905R1 CWG Symmetry for spaceship Jacksonville      
P0966R1 LWG string::reserve Should Not Shrink Jacksonville Complete [3] 12.0  
             
P0019R8 LWG Atomic Ref Rapperswil      
P0458R2 LWG Checking for Existence of an Element in Associative Containers Rapperswil Complete 13.0  
P0475R1 LWG LWG 2511: guaranteed copy elision for piecewise construction Rapperswil Complete    
P0476R2 LWG Bit-casting object representations Rapperswil Complete 14.0  
P0528R3 CWG The Curious Case of Padding Bits, Featuring Atomic Compare-and-Exchange Rapperswil      
P0542R5 CWG Support for contract based programming in C++ Rapperswil Removed in Cologne n/a  
P0556R3 LWG Integral power-of-2 operations Rapperswil Complete 9.0  
P0619R4 LWG Reviewing Deprecated Facilities of C++17 for C++20 Rapperswil Partial [4]    
P0646R1 LWG Improving the Return Value of Erase-Like Algorithms Rapperswil Complete 10.0  
P0722R3 CWG Efficient sized delete for variable sized classes Rapperswil Complete 9.0  
P0758R1 LWG Implicit conversion traits and utility functions Rapperswil Complete    
P0759R1 LWG fpos Requirements Rapperswil Complete 11.0  
P0769R2 LWG Add shift to <algorithm> Rapperswil Complete 12.0  
P0788R3 LWG Standard Library Specification in a Concepts and Contracts World Rapperswil Removed in Cologne n/a  
P0879R0 LWG Constexpr for swap and swap related functions Also resolves LWG issue 2800. Rapperswil Complete 13.0  
P0887R1 LWG The identity metafunction Rapperswil Complete 8.0  
P0892R2 CWG explicit(bool) Rapperswil      
P0898R3 LWG Standard Library Concepts Rapperswil Complete 13.0  
P0935R0 LWG Eradicating unnecessarily explicit default constructors from the standard library Rapperswil Complete 12.0  
P0941R2 CWG Integrating feature-test macros into the C++ WD Rapperswil In Progress    
P1023R0 LWG constexpr comparison operators for std::array Rapperswil Complete 8.0  
P1025R1 CWG Update The Reference To The Unicode Standard Rapperswil      
P1120R0 CWG Consistency improvements for <=> and other comparison operators Rapperswil      
             
P0318R1 LWG unwrap_ref_decay and unwrap_reference San Diego Complete 8.0  
P0356R5 LWG Simplified partial function application San Diego Complete 13.0  
P0357R3 LWG reference_wrapper for incomplete types San Diego Complete 8.0  
P0482R6 CWG char8_t: A type for UTF-8 characters and strings San Diego Complete 16.0  
P0487R1 LWG Fixing operator>>(basic_istream&, CharT*) (LWG 2499) San Diego Complete 8.0  
P0591R4 LWG Utility functions to implement uses-allocator construction San Diego Partial [1]    
P0595R2 CWG std::is_constant_evaluated() San Diego Complete 9.0  
P0602R4 LWG variant and optional should propagate copy/move triviality San Diego Complete 8.0  
P0608R3 LWG A sane variant converting constructor San Diego Complete 9.0  
P0655R1 LWG visit<R>: Explicit Return Type for visit San Diego Complete 12.0  
P0771R1 LWG std::function move constructor should be noexcept San Diego Complete 6.0  
P0896R4 LWG The One Ranges Proposal San Diego Complete 15.0 ranges
P0899R1 LWG P0899R1 - LWG 3016 is not a defect San Diego Nothing To Do    
P0919R3 LWG Heterogeneous lookup for unordered containers San Diego Complete 12.0  
P0972R0 LWG <chrono> zero(), min(), and max() should be noexcept San Diego Complete 8.0  
P1006R1 LWG Constexpr in std::pointer_traits San Diego Complete 8.0  
P1007R3 LWG std::assume_aligned San Diego Complete 15.0  
P1020R1 LWG Smart pointer creation with default initialization San Diego Complete 16.0  
P1032R1 LWG Misc constexpr bits San Diego Complete 13.0  
P1085R2 LWG Should Span be Regular? San Diego Complete 8.0  
P1123R0 LWG Editorial Guidance for merging P0019r8 and P0528r3 San Diego
   
P1148R0 LWG Cleaning up Clause 20 San Diego
   
P1165R1 LWG Make stateful allocator propagation more consistent for operator+(basic_string) San Diego Complete 15.0  
P1209R0 LWG Adopt Consistent Container Erasure from Library Fundamentals 2 for C++20 San Diego Complete 8.0  
P1210R0 LWG Completing the Rebase of Library Fundamentals, Version 3, Working Draft San Diego
   
P1236R1 CWG Alternative Wording for P0907R4 Signed Integers are Two’s Complement San Diego
   
P1248R1 LWG Remove CommonReference requirement from StrictWeakOrdering (a.k.a Fixing Relations) San Diego Complete 13.0  
P1285R0 LWG Improving Completeness Requirements for Type Traits San Diego
   
P1353R0 CWG Missing feature test macros San Diego
   
             
P0339R6 LWG polymorphic_allocator<> as a vocabulary type Kona Complete 16.0  
P0340R3 LWG Making std::underlying_type SFINAE-friendly Kona Complete 9.0  
P0738R2 LWG I Stream, You Stream, We All Stream for istream_iterator Kona      
P0811R3 LWG Well-behaved interpolation for numbers and pointers Kona Complete 9.0  
P0920R2 LWG Precalculated hash values in lookup Kona Reverted by P1661    
P1001R2 LWG Target Vectorization Policies from Parallelism V2 TS to C++20 Kona      
P1024R3 LWG Usability Enhancements for std::span Kona Complete 9.0  
P1164R1 LWG Make create_directory() Intuitive Kona Complete 12.0  
P1227R2 LWG Signed ssize() functions, unsigned size() functions Kona Complete 9.0  
P1252R2 LWG Ranges Design Cleanup Kona Complete 15.0 ranges
P1286R2 CWG Contra CWG DR1778 Kona      
P1357R1 LWG Traits for [Un]bounded Arrays Kona Complete 9.0  
P1458R1 LWG Mandating the Standard Library: Clause 16 - Language support library Kona Complete 9.0  
P1459R1 LWG Mandating the Standard Library: Clause 18 - Diagnostics library Kona Complete 9.0  
P1462R1 LWG Mandating the Standard Library: Clause 20 - Strings library Kona Complete 9.0  
P1463R1 LWG Mandating the Standard Library: Clause 21 - Containers library Kona      
P1464R1 LWG Mandating the Standard Library: Clause 22 - Iterators library Kona Complete 9.0  
             
P0325R4 LWG to_array from LFTS with updates Cologne Complete 10.0  
P0408R7 LWG Efficient Access to basic_stringbuf’s Buffer Cologne In Progress [8]    
P0466R5 LWG Layout-compatibility and Pointer-interconvertibility Traits Cologne      
P0553R4 LWG Bit operations Cologne Complete 9.0  
P0631R8 LWG Math Constants Cologne Complete 11.0  
P0645R10 LWG Text Formatting Cologne Complete [2] 14.0  
P0660R10 LWG Stop Token and Joining Thread, Rev 10. Cologne In Progress [9]    
P0784R7 CWG More constexpr containers Cologne Complete 12.0  
P0980R1 LWG Making std::string constexpr Cologne Complete 15.0  
P1004R2 LWG Making std::vector constexpr Cologne Complete 15.0  
P1035R7 LWG Input Range Adaptors Cologne Complete 16.0 ranges
P1065R2 LWG Constexpr INVOKE Cologne Complete 12.0  
P1135R6 LWG The C++20 Synchronization Library Cologne Complete 11.0  
P1207R4 LWG Movability of Single-pass Iterators Cologne Complete 15.0 ranges
P1208R6 LWG Adopt source_location for C++20 Cologne Complete 16.0  
P1355R2 LWG Exposing a narrow contract for ceil2 Cologne Complete 9.0  
P1361R2 LWG Integration of chrono with text formatting Cologne Partial    
P1423R3 LWG char8_t backward compatibility remediation Cologne Complete 15.0  
P1424R1 LWG ‘constexpr’ feature macro concerns Cologne Superseded by P1902    
P1466R3 LWG Miscellaneous minor fixes for chrono Cologne      
P1474R1 LWG Helpful pointers for ContiguousIterator Cologne Complete 15.0 ranges
P1502R1 LWG Standard library header units for C++20 Cologne      
P1522R1 LWG Iterator Difference Type and Integer Overflow Cologne Complete 15.0 ranges
P1523R1 LWG Views and Size Types Cologne Complete 15.0 ranges
P1612R1 LWG Relocate Endian’s Specification Cologne Complete 10.0  
P1614R2 LWG The Mothership has Landed Cologne In Progress    
P1638R1 LWG basic_istream_view::iterator should not be copyable Cologne Complete 16.0 ranges
P1643R1 LWG Add wait/notify to atomic_ref Cologne      
P1644R0 LWG Add wait/notify to atomic<shared_ptr> Cologne      
P1650R0 LWG Output std::chrono::days with ‘d’ suffix Cologne Complete 16.0  
P1651R0 LWG bind_front should not unwrap reference_wrapper Cologne Complete 13.0  
P1652R1 LWG Printf corner cases in std::format Cologne Complete 14.0  
P1661R1 LWG Remove dedicated precalculated hash lookup interface Cologne Nothing To Do    
P1754R1 LWG Rename concepts to standard_case for C++20, while we still can Cologne Complete 15.0 ranges
             
P0883R2 LWG Fixing Atomic Initialization Belfast Complete [5] [6] 14.0  
P1391R4 LWG Range constructor for std::string_view Belfast Complete 14.0 ranges
P1394R4 LWG Range constructor for std::span Belfast Complete 14.0 ranges
P1456R1 LWG Move-only views Belfast Complete 15.0 ranges
P1622R3 LWG Mandating the Standard Library: Clause 32 - Thread support library Belfast
   
P1645R1 LWG constexpr for numeric algorithms Belfast Complete 12.0  
P1686R2 LWG Mandating the Standard Library: Clause 27 - Time library Belfast
   
P1690R1 LWG Refinement Proposal for P0919 Heterogeneous lookup for unordered containers Belfast Complete 12.0  
P1716R3 LWG ranges compare algorithm are over-constrained Belfast Complete 15.0 ranges
P1718R2 LWG Mandating the Standard Library: Clause 25 - Algorithms library Belfast
   
P1719R2 LWG Mandating the Standard Library: Clause 26 - Numerics library Belfast
   
P1720R2 LWG Mandating the Standard Library: Clause 28 - Localization library Belfast
   
P1721R2 LWG Mandating the Standard Library: Clause 29 - Input/Output library Belfast
   
P1722R2 LWG Mandating the Standard Library: Clause 30 - Regular Expression library Belfast
   
P1723R2 LWG Mandating the Standard Library: Clause 31 - Atomics library Belfast
   
P1855R0 LWG Make <compare> freestanding Belfast
   
P1862R1 LWG Ranges adaptors for non-copyable iterators Belfast Complete 16.0 ranges
P1865R1 LWG Add max() to latch and barrier Belfast Complete 11.0  
P1869R1 LWG Rename ‘condition_variable_any’ interruptible wait methods Belfast
   
P1870R1 LWG forwarding-range is too subtle Belfast Complete 15.0 ranges
P1871R1 LWG Concept traits should be named after concepts Belfast Complete 14.0 ranges
P1872R0 LWG span should have size_type, not index_type Belfast Complete 10.0  
P1878R1 LWG Constraining Readable Types Belfast Complete 15.0 ranges
P1892R1 LWG Extended locale-specific presentation specifiers for std::format Belfast Complete 14.0  
P1902R1 LWG Missing feature-test macros 2018-2019 Belfast
   
P1959R0 LWG Remove std::weak_equality and std::strong_equality Belfast Nothing To Do    
P1960R0 LWG NB Comment Changes Reviewed by SG1 Belfast
   
P1961R0 LWG Harmonizing the definitions of total order for pointers Belfast
   
P1965R0 LWG Blanket Wording for Specifying “Hidden Friends” Belfast
   
             
P0586R2 LWG Safe integral comparisons Prague Complete 13.0  
P0593R6 CWG Implicit creation of objects for low-level object manipulation Prague
   
P1115R3 LWG Improving the Return Value of Erase-Like Algorithms II: Free erase/erase if Prague Complete 11.0  
P1243R4 LWG Rangify New Algorithms Prague Complete 15.0 ranges
P1460R1 LWG Mandating the Standard Library: Clause 20 - Utilities library Prague
   
P1739R4 LWG Avoid template bloat for safe_ranges in combination with “subrange-y” view adaptors Prague Complete 15.0 ranges
P1831R1 LWG Deprecating volatile: library Prague
   
P1868R2 LWG width: clarifying units of width and precision in std::format Prague Complete 14.0  
P1937R2 CWG Fixing inconsistencies between constexpr and consteval functions Prague
   
P1956R1 LWG On the names of low-level bit manipulation functions Prague Complete 12.0  
P1957R2 CWG Converting from T* to bool should be considered narrowing (re: US 212) Prague
   
P1963R0 LWG Fixing US 313 Prague
   
P1964R2 LWG Wording for boolean-testable Prague Complete 13.0  
P1970R2 LWG Consistency for size() functions: Add ranges::ssize Prague Complete 15.0 ranges
P1973R1 LWG Rename “_default_init” Functions, Rev1 Prague Complete 16.0  
P1976R2 LWG Fixed-size span construction from dynamic range Prague Complete 11.0 ranges
P1981R0 LWG Rename leap to leap_second Prague
   
P1982R0 LWG Rename link to time_zone_link Prague
   
P1983R0 LWG Wording for GB301, US296, US292, US291, and US283 Prague Complete 15.0 ranges
P1994R1 LWG elements_view needs its own sentinel Prague Complete 16.0 ranges
P2002R1 CWG Defaulted comparison specification cleanups Prague
   
P2045R1 LWG Missing Mandates for the standard library Prague
   
P2085R0 CWG Consistent defaulted comparisons Prague
   
P2091R0 LWG Issues with range access CPOs Prague Complete 15.0 ranges
P2101R0 LWG ‘Models’ subsumes ‘satisfies’ (Wording for US298 and US300) Prague
   
P2102R0 LWG Make ‘implicit expression variations’ more explicit (Wording for US185) Prague
   
P2106R0 LWG Alternative wording for GB315 and GB316 Prague Complete 15.0 ranges
P2116R0 LWG Remove tuple-like protocol support from fixed-extent span Prague Complete 11.0  
             
P2231R1 LWG Missing constexpr in std::optional and std::variant June 2021 Partial [7] 13.0  
P2325R3 LWG Views should not be required to be default constructible June 2021 Complete 16.0 ranges
P2210R2 LWG Superior String Splitting June 2021 Complete 16.0 ranges
P2216R3 LWG std::format improvements June 2021 Complete 15.0  
P2281R1 LWG Clarifying range adaptor objects June 2021 Complete 14.0 ranges
P2328R1 LWG join_view should join all views of ranges June 2021 Complete 15.0 ranges
P2367R0 LWG Remove misuses of list-initialization from Clause 24 June 2021 Complete 15.0 ranges
             
P2372R3 LWG Fixing locale handling in chrono formatters October 2021 In Progress    
P2415R2 LWG What is a view October 2021 Complete 14.0 ranges
P2418R2 LWG Add support for std::generator-like types to std::format October 2021 Complete 15.0  
P2432R1 LWG Fix istream_view October 2021 Complete 16.0 ranges

Note

[1]P0591: The changes in [mem.poly.allocator.mem] are missing.
[2]P0645: The paper is implemented but still marked as an incomplete feature (the feature-test macro is not set and the libary is only available when built with -fexperimental-library). Not yet implemented LWG-issues will cause API and ABI breakage.
[3]P0966: It was previously erroneously marked as complete in version 8.0. See bug 45368.
[4]P0619: Only sections D.8, D.9, D.10 and D.13 are implemented. Sections D.4, D.7, D.11, D.12, and D.14 remain undone.
[5]P0883: shared_ptr and floating-point changes weren’t applied as they themselves aren’t implemented yet.
[6]P0883: ATOMIC_FLAG_INIT was marked deprecated in version 14.0, but was undeprecated with the implementation of LWG3659 in version 15.0.
[7]P2231: Optional is complete. The changes to variant haven’t been implemented yet.
[8]P0408: Only view() members implemented.
[9]P0660: Section 32.3 Stop Tokens is complete. jthread hasn’t been implemented yet.

Library Working Group Issues Status

Issue # Issue Name Meeting Status First released version Labels
2070 allocate_shared should use allocator_traits<A>::construct Toronto Resolved by P0674R1    
2444 Inconsistent complexity for std::sort_heap Toronto Nothing To Do    
2593 Moved-from state of Allocators Toronto      
2597 std::log misspecified for complex numbers Toronto      
2783 stack::emplace() and queue::emplace() should return decltype(auto) Toronto Complete    
2932 Constraints on parallel algorithm implementations are underspecified Toronto      
2937 Is equivalent("existing_thing", "not_existing_thing") an error Toronto Complete    
2940 result_of specification also needs a little cleanup Toronto Nothing To Do    
2942 LWG 2873’s resolution missed weak_ptr::owner_before Toronto Complete    
2954 Specialization of the convenience variable templates should be prohibited Toronto Complete    
2961 Bad postcondition for set_default_resource Toronto Complete 16.0  
2966 Incomplete resolution of US 74 Toronto Nothing To Do    
2974 Diagnose out of bounds tuple_element/variant_alternative Toronto Complete    
           
2779 [networking.ts] Relax requirements on buffer sequence iterators Albuquerque      
2870 Default value of parameter theta of polar should be dependent Albuquerque Complete    
2935 What should create_directories do when p already exists but is not a directory? Albuquerque Nothing To Do    
2941 [thread.req.timing] wording should apply to both member and namespace-level functions Albuquerque Nothing To Do    
2944 LWG 2905 accidentally removed requirement that construction of the deleter doesn’t throw an exception Albuquerque Nothing To Do    
2945 Order of template parameters in optional comparisons Albuquerque Complete    
2948 unique_ptr does not define operator<< for stream output Albuquerque Complete    
2950 std::byte operations are misspecified Albuquerque Complete    
2952 iterator_traits should work for pointers to cv T Albuquerque Complete    
2953 LWG 2853 should apply to deque::erase too Albuquerque Complete    
2958 Moves improperly defined as deleted Albuquerque Complete    
2964 Apparently redundant requirement for dynamic_pointer_cast Albuquerque      
2965 Non-existing path::native_string() in filesystem_error::what() specification Albuquerque Nothing To Do    
2972 What is is_trivially_destructible_v<int>? Albuquerque Complete    
2976 Dangling uses_allocator specialization for packaged_task Albuquerque Complete    
2977 unordered_meow::merge() has incorrect Throws: clause Albuquerque Nothing To Do    
2978 Hash support for pmr::string and friends Albuquerque Complete 16.0  
2979 aligned_union should require complete object types Albuquerque Complete    
2980 Cannot compare_exchange empty pointers Albuquerque      
2981 Remove redundant deduction guides from standard library Albuquerque Nothing To Do    
2982 Making size_type consistent in associative container deduction guides Albuquerque      
2988 Clause 32 cleanup missed one typename Albuquerque Complete 13.0  
2993 reference_wrapper<T> conversion from T&& Albuquerque Complete 13.0  
2998 Requirements on function objects passed to {forward_,}list-specific algorithms Albuquerque Nothing To Do    
3001 weak_ptr::element_type needs remove_extent_t Albuquerque Complete 14.0  
3024 variant’s copies must be deleted instead of disabled via SFINAE Albuquerque Complete    
           
2164 What are the semantics of vector.emplace(vector.begin(), vector.back())? Jacksonville Complete    
2243 istream::putback problem Jacksonville Complete    
2816 resize_file has impossible postcondition Jacksonville Nothing To Do    
2843 Unclear behavior of std::pmr::memory_resource::do_allocate() Jacksonville Complete    
2849 Why does !is_regular_file(from) cause copy_file to report a “file already exists” error? Jacksonville Nothing To Do    
2851 std::filesystem enum classes are now underspecified Jacksonville Nothing To Do    
2946 LWG 2758’s resolution missed further corrections Jacksonville Complete    
2969 polymorphic_allocator::construct() shouldn’t pass resource() Jacksonville Complete    
2975 Missing case for pair construction in scoped and polymorphic allocators Jacksonville      
2989 path’s stream insertion operator lets you insert everything under the sun Jacksonville Complete    
3000 monotonic_memory_resource::do_is_equal uses dynamic_cast unnecessarily Jacksonville Complete 16.0  
3002 [networking.ts] basic_socket_acceptor::is_open() isn’t noexcept Jacksonville      
3004 §[string.capacity] and §[vector.capacity] should specify time complexity for capacity() Jacksonville Nothing To Do    
3005 Destruction order of arrays by make_shared/allocate_shared only recommended? Jacksonville      
3007 allocate_shared should rebind allocator to cv-unqualified value_type for construction Jacksonville      
3009 Including <string_view> doesn’t provide std::size/empty/data Jacksonville Complete    
3010 [networking.ts] uses_executor says “if a type T::executor_type exists” Jacksonville      
3013 (recursive_)directory_iterator construction and traversal should not be noexcept Jacksonville Complete    
3014 More noexcept issues with filesystem operations Jacksonville Complete    
3015 copy_options::*unspecified* underspecified Jacksonville Nothing To Do    
3017 list splice functions should use addressof Jacksonville Complete    
3020 [networking.ts] Remove spurious nested value_type buffer sequence requirement Jacksonville      
3026 filesystem::weakly_canonical still defined in terms of canonical(p, base) Jacksonville Complete    
3030 Who shall meet the requirements of try_lock? Jacksonville Nothing To Do    
3034 P0767R1 breaks previously-standard-layout types Jacksonville Complete    
3035 std::allocator’s constructors should be constexpr Jacksonville Complete    
3039 Unnecessary decay in thread and packaged_task Jacksonville Complete    
3041 Unnecessary decay in reference_wrapper Jacksonville Complete    
3042 is_literal_type_v should be inline Jacksonville Complete    
3043 Bogus postcondition for filesystem_error constructor Jacksonville Complete    
3045 atomic<floating-point> doesn’t have value_type or difference_type Jacksonville      
3048 transform_reduce(exec, first1, last1, first2, init) discards execution policy Jacksonville      
3051 Floating point classifications were inadvertently changed in P0175 Jacksonville Nothing To Do    
3075 basic_string needs deduction guides from basic_string_view Jacksonville Complete    
           
2139 What is a user-defined type? Rapperswil      
2970 Return type of std::visit misspecified Rapperswil Complete 11.0  
3058 Parallel adjacent_difference shouldn’t require creating temporaries Rapperswil      
3062 Unnecessary decay_t in is_execution_policy_v should be remove_cvref_t Rapperswil      
3067 recursive_directory_iterator::pop must invalidate Rapperswil Nothing To Do    
3071 [networking.ts] read_until still refers to “input sequence” Rapperswil Nothing To Do    
3074 Non-member functions for valarray should only deduce from the valarray Rapperswil      
3076 basic_string CTAD ambiguity Rapperswil Complete    
3079 LWG 2935 forgot to fix the existing_p overloads of create_directory Rapperswil Nothing To Do    
3080 Floating point from_chars pattern specification breaks round-tripping Rapperswil      
3083 What should ios::iword(-1) do? Rapperswil Nothing To Do    
3094 [time.duration.io]p4 makes surprising claims about encoding Rapperswil      
3100 Unnecessary and confusing “empty span” wording Rapperswil Nothing To Do    
3102 Clarify span iterator and const_iterator behavior Rapperswil Complete    
3104 Fixing duration division Rapperswil Complete    
           
2183 Muddled allocator requirements for match_results constructors San Diego Complete    
2184 Muddled allocator requirements for match_results assignments San Diego Complete    
2412 promise::set_value() and promise::get_future() should not race San Diego      
2499 operator>>(basic_istream&, CharT*) makes it hard to avoid buffer overflows San Diego Resolved by P0487R1    
2682 filesystem::copy() won’t create a symlink to a directory San Diego Nothing To Do    
2697 [concurr.ts] Behavior of future/shared_future unwrapping constructor when given an invalid future San Diego      
2797 Trait precondition violations San Diego Resolved by 1285R0    
2936 Path comparison is defined in terms of the generic format San Diego Complete    
2943 Problematic specification of the wide version of basic_filebuf::open San Diego Nothing To Do    
2960 [fund.ts.v3] nonesuch is insufficiently useless San Diego Complete    
2995 basic_stringbuf default constructor forbids it from using SSO capacity San Diego      
2996 Missing rvalue overloads for shared_ptr operations San Diego      
3008 make_shared (sub)object destruction semantics are not specified San Diego Complete 16.0  
3022 is_convertible<derived*, base*> may lead to ODR San Diego Resolved by 1285R0    
3025 Map-like container deduction guides should use pair<Key, T>, not pair<const Key, T> San Diego Complete    
3031 Algorithms and predicates with non-const reference arguments San Diego      
3037 polymorphic_allocator and incomplete types San Diego Complete 16.0  
3038 polymorphic_allocator::allocate should not allow integer overflow to create vulnerabilities San Diego Complete 14.0  
3054 uninitialized_copy appears to not be able to meet its exception-safety guarantee San Diego Nothing To Do    
3065 LWG 2989 missed that all path’s other operators should be hidden friends as well San Diego Complete    
3096 path::lexically_relative is confused by trailing slashes San Diego Complete    
3116 OUTERMOST_ALLOC_TRAITS needs remove_reference_t San Diego      
3122 __cpp_lib_chrono_udls was accidentally dropped San Diego Complete    
3127 basic_osyncstream::rdbuf needs a const_cast San Diego      
3128 strstream::rdbuf needs a const_cast San Diego Nothing To Do    
3129 regex_token_iterator constructor uses wrong pointer arithmetic San Diego      
3130 §[input.output] needs many addressof San Diego      
3131 addressof all the things San Diego      
3132 Library needs to ban macros named expects or ensures San Diego Nothing To Do    
3134 [fund.ts.v3] LFTSv3 contains extraneous [meta] variable templates that should have been deleted by P09961 San Diego Resolved by P1210R0    
3137 Header for __cpp_lib_to_chars San Diego Complete    
3140 COMMON_REFis unimplementable as specified San Diego Nothing To Do    
3145 file_clock breaks ABI for C++17 implementations San Diego Complete    
3147 Definitions of “likely” and “unlikely” are likely to cause problems San Diego      
3148 <concepts> should be freestanding San Diego      
3153 Common and common_type have too little in common San Diego Complete 13.0  
3154 Common and CommonReference have a common defect San Diego Nothing To Do    
           
3012 atomic<T> is unimplementable for non-is_trivially_copy_constructible T Kona      
3040 basic_string_view::starts_with Effects are incorrect Kona Complete    
3077 (push|emplace)_back should invalidate the end iterator Kona Nothing To Do    
3087 One final &x in §[list.ops] Kona Nothing To Do    
3101 span’s Container constructors need another constraint Kona Complete    
3112 system_error and filesystem_error constructors taking a string may not be able to meet their postconditions Kona      
3119 Program-definedness of closure types Kona Nothing To Do    
3133 Modernizing numeric type requirements Kona      
3144 span does not have a const_pointer typedef Kona Complete    
3173 Enable CTAD for ref-view Kona Complete 15.0 ranges
3179 subrange should always model Range Kona Nothing To Do   ranges
3180 Inconsistently named return type for ranges::minmax_element Kona Complete 15.0 ranges
3182 Specification of Same could be clearer Kona Complete 15.0  
           
2899 is_(nothrow_)move_constructible and tuple, optional and unique_ptr Cologne      
3055 path::operator+=(*single-character*) misspecified Cologne Complete 7.0  
3158 tuple(allocator_arg_t, const Alloc&) should be conditionally explicit Cologne Complete 10.0  
3169 ranges permutation generators discard useful information Cologne Complete 15.0 ranges
3183 Normative permission to specialize Ranges variable templates Cologne Nothing To Do   ranges
3184 Inconsistencies in bind_front wording Cologne Complete 13.0  
3185 Uses-allocator construction functions missing constexpr and noexcept Cologne Complete 16.0  
3186 ranges removal, partition, and partial_sort_copy algorithms discard useful information Cologne Complete 15.0 ranges
3187 P0591R4 reverted DR 2586 fixes to scoped_allocator_adaptor::construct() Cologne      
3191 std::ranges::shuffle synopsis does not match algorithm definition Cologne Complete 15.0 ranges
3196 std::optional<T> is ill-formed is T is an array Cologne Complete    
3198 Bad constraint on std::span::span() Cologne Complete    
3199 istream >> bitset<0> fails Cologne      
3202 P0318R1 was supposed to be revised Cologne Complete    
3206 year_month_day conversion to sys_days uses not-existing member function Cologne Complete    
3208 Boolean’s expression requirements are ordered inconsistently Cologne Nothing To Do    
3209 Expression in year::ok() returns clause is ill-formed Cologne Complete    
           
3231 year_month_day_last::day specification does not cover !ok() values Belfast Nothing To Do    
3225 zoned_time converting constructor shall not be noexcept Belfast     chrono
3190 std::allocator::allocate sometimes returns too little storage Belfast Complete 14.0  
3218 Modifier for %d parse flag does not match POSIX and format specification Belfast     chrono format
3224 zoned_time constructor from TimeZonePtr does not specify initialization of tp_ Belfast     chrono
3230 Format specifier %y/%Y is missing locale alternative versions Belfast Complete 16.0 chrono format
3232 Inconsistency in zoned_time deduction guides Belfast     chrono
3222 P0574R1 introduced preconditions on non-existent parameters Belfast      
3221 Result of year_month arithmetic with months is ambiguous Belfast Complete 8.0  
3235 parse manipulator without abbreviation is not callable Belfast      
3246 What are the constraints on the template parameter of basic_format_arg? Belfast     format
3253 basic_syncbuf::basic_syncbuf() should not be explicit Belfast      
3245 Unnecessary restriction on '%p' parse specifier Belfast     chrono
3244 Constraints for Source in §[fs.path.req] insufficiently constrainty Belfast      
3241 chrono-spec grammar ambiguity in §[time.format] Belfast Complete 16.0 chrono format
3257 Missing feature testing macro update from P0858 Belfast      
3256 Feature testing macro for constexpr algorithms Belfast Complete 13.0  
3273 Specify weekday_indexed to range of [0, 7] Belfast Complete 16.0 chrono
3070 path::lexically_relative causes surprising results if a filename can also be a root-name Belfast      
3266 to_chars(bool) should be deleted Belfast Complete 14.0  
3272 %I%p should parse/format duration since midnight Belfast     chrono format
3259 The definition of constexpr iterators should be adjusted Belfast Nothing To Do    
3103 Errors in taking subview of span should be ill-formed where possible Belfast 11.0 Complete  
3274 Missing feature test macro for <span> Belfast Complete 11.0  
3276 Class split_view::outer_iterator::value_type should inherit from view_interface Belfast Complete 15.0 ranges
3277 Pre-increment on prvalues is not a requirement of weakly_incrementable Belfast Nothing To Do   ranges
3149 DefaultConstructible should require default initialization Belfast Complete 13.0  
           
1203 More useful rvalue stream insertion Prague Complete 12.0  
2859 Definition of reachable in [ptr.launder] misses pointer arithmetic from pointer-interconvertible object Prague      
3018 shared_ptr of function type Prague      
3050 Conversion specification problem in chrono::duration constructor Prague     chrono
3141 CopyConstructible doesn’t preserve source values Prague Nothing To Do    
3150 UniformRandomBitGenerator should validate min and max Prague Complete 13.0 ranges
3175 The CommonReference requirement of concept SwappableWith is not satisfied in the example Prague Complete 13.0  
3194 ConvertibleTo prose does not match code Prague Complete 13.0  
3200 midpoint should not constrain T is complete Prague Nothing To Do    
3201 lerp should be marked as noexcept Prague Complete    
3226 zoned_time constructor from string_view should accept zoned_time<Duration2, TimeZonePtr2> Prague     chrono
3233 Broken requirements for shared_ptr converting constructors Prague      
3237 LWG 3038 and 3190 have inconsistent PRs Prague Complete 16.0  
3238 Insufficiently-defined behavior of std::function deduction guides Prague      
3242 std::format: missing rules for arg-id in width and precision Prague Complete Clang 14 format
3243 std::format and negative zeroes Prague Complete 14.0 format
3247 ranges::iter_move should perform ADL-only lookup of iter_move Prague Complete 15.0 ranges
3248 std::format #b, #B, #o, #x, and #X presentation types misformat negative numbers Prague Complete 14.0 format
3250 std::format: # (alternate form) for NaN and inf Prague Complete 14.0 format
3251 Are std::format alignment specifiers applied to string arguments? Prague Complete 14.0 format
3252 Parse locale’s aware modifiers for commands are not consistent with POSIX spec Prague     chrono
3254 Strike stop_token’s operator!= Prague Complete 17.0  
3255 span’s array constructor is too strict Prague Complete    
3260 year_month* arithmetic rejects durations convertible to years Prague     chrono
3262 Formatting of negative durations is not specified Prague Complete 16.0 chrono format
3264 sized_range and ranges::size redundantly use disable_sized_range Prague Complete 15.0 ranges
3269 Parse manipulators do not specify the result of the extraction from stream Prague     chrono
3270 Parsing and formatting %j with durations Prague Partial   chrono format
3280 View converting constructors can cause constraint recursion and are unneeded Prague Complete 15.0 ranges
3281 Conversion from *pair-like* types to subrange is a silent semantic promotion Prague Complete 15.0 ranges
3282 subrange converting constructor should disallow derived to base conversions Prague Complete 15.0 ranges
3284 random_access_iterator semantic constraints accidentally promote difference type using unary negate Prague Nothing To Do   ranges
3285 The type of a customization point object shall satisfy semiregular Prague Nothing To Do   ranges
3286 ranges::size is not required to be valid after a call to ranges::begin on an input range Prague Complete 15.0 ranges
3291 iota_view::iterator has the wrong iterator_category Prague Complete 15.0 ranges
3292 iota_view is under-constrained Prague Complete 15.0 ranges
3294 zoned_time deduction guides misinterprets string/char* Prague     chrono
3296 Inconsistent default argument for basic_regex<>::assign Prague Complete    
3299 Pointers don’t need customized iterator behavior Prague Complete 15.0 ranges
3300 Non-array ssize overload is underconstrained Prague Nothing To Do    
3301 transform_view::iterator has incorrect iterator_category Prague Complete 15.0 ranges
3302 Range adaptor objects keys and values are unspecified Prague Complete 16.0 ranges
3303 Bad “constexpr” marker for destroy/destroy_n Prague      
3304 Allocate functions of std::polymorphic_allocator should require [[nodiscard]] Prague Complete 16.0  
3307 std::allocator<void>().allocate(n) Prague      
3310 Replace SIZE_MAX with numeric_limits<size_t>::max() Prague Complete 16.0  
3313 join_view::iterator::operator-- is incorrectly constrained Prague Complete 14.0 ranges
3314 Is stream insertion behavior locale dependent when Period::type is micro? Prague Complete 16.0 chrono
3315 Correct Allocator Default Behavior Prague      
3316 Correctly define epoch for utc_clock / utc_timepoint Prague     chrono
3317 Incorrect operator<< for floating-point durations Prague     chrono
3318 Clarify whether clocks can represent time before their epoch Prague     chrono
3319 Properly reference specification of IANA time zone database Prague     chrono
3320 span::cbegin/cend methods produce different results than std::[ranges::]cbegin/cend Prague Complete    
3321 uninitialized_construct_using_allocator should use construct_at Prague Complete 16.0  
3323 *has-tuple-element* helper concept needs convertible_to Prague Complete 16.0 ranges
3324 Special-case std::strong/weak/partial_order for pointers Prague Complete 14.0 spaceship
3325 Constrain return type of transformation function for transform_view Prague Complete 15.0 ranges
3326 enable_view has false positives Prague Complete 15.0 ranges
3327 Format alignment specifiers vs. text direction Prague Nothing To Do   format
3328 Clarify that std::string is not good for UTF-8 Prague      
3329 totally_ordered_with both directly and indirectly requires common_reference_with Prague Complete 13.0  
3330 Include <compare> from most library headers Prague Complete 13.0 spaceship
3331 Define totally_ordered/_with in terms of partially-ordered-with Prague Complete 13.0  
3332 Issue in §[time.format] Prague Complete 16.0 chrono format
3334 basic_osyncstream move assignment and destruction calls basic_syncbuf::emit() twice Prague      
3335 Resolve C++20 NB comments US 273 and GB 274 Prague Complete 15.0 ranges
3338 Rename default_constructible to default_initializable Prague Complete 13.0  
3340 Formatting functions should throw on argument/format string mismatch in §[format.functions] Prague Complete 14.0 format
3346 pair and tuple copy and move constructor have backwards specification Prague      
3347 std::pair<T, U> now requires T and U to be less-than-comparable Prague Complete 17.0  
3348 __cpp_lib_unwrap_ref in wrong header Prague Complete 12.0  
3349 Missing __cpp_lib_constexpr_complex for P0415R1 Prague Complete 16.0  
3350 Simplify return type of lexicographical_compare_three_way Prague Complete 17.0 spaceship
3351 ranges::enable_safe_range should not be constrained Prague Complete 15.0 ranges
3352 strong_equality isn’t a thing Prague Nothing To Do   spaceship
3354 has_strong_structural_equality has a meaningless definition Prague Nothing To Do   spaceship
3355 The memory algorithms should support move-only input iterators introduced by P1207 Prague Complete 15.0 ranges
3356 __cpp_lib_nothrow_convertible should be __cpp_lib_is_nothrow_convertible Prague Complete 12.0  
3358 §[span.cons] is mistaken that to_address can throw Prague Complete 17.0  
3359 <chrono> leap second support should allow for negative leap seconds Prague     chrono
3360 three_way_comparable_with is inconsistent with similar concepts Prague Nothing To Do   spaceship
3362 Strike stop_source’s operator!= Prague      
3363 drop_while_view should opt-out of sized_range Prague Nothing To Do   ranges
3364 Initialize data members of ranges and their iterators Prague Complete 16.0 ranges
3367 Integer-class conversions should not throw Prague Nothing To Do    
3369 span’s deduction-guide for built-in arrays doesn’t work Prague Complete 14.0  
3371 visit_format_arg and make_format_args are not hidden friends Prague Complete 14.0 format
3372 vformat_to should not try to deduce Out twice Prague Complete 14.0 format
3373 {to,from}_chars_result and format_to_n_result need the “we really mean what we say” wording Prague Complete 14.0 format
3374 P0653 + P1006 should have made the other std::to_address overload constexpr Prague Complete 12.0  
3375 decay in viewable_range should be remove_cvref Prague Complete 15.0 ranges
3377 elements_view::iterator befriends a specialization of itself Prague Nothing To Do   ranges
3379 safe” in several library names is misleading Prague Complete 15.0 ranges
3380 common_type and comparison categories Prague Complete 15.0 spaceship
3381 begin and data must agree for contiguous_range Prague Nothing To Do   ranges
3382 NTTP for pair and array Prague      
3383 §[time.zone.leap.nonmembers] sys_seconds should be replaced with seconds Prague     chrono
3384 transform_view::*sentinel* has an incorrect operator- Prague Complete 15.0 ranges
3385 common_iterator is not sufficiently constrained for non-copyable iterators Prague Complete 15.0 ranges
3387 §[range.reverse.view] reverse_view<V> unintentionally requires range<const V> Prague Complete 15.0 ranges
3388 view iterator types have ill-formed <=> operators Prague Complete 16.0 ranges
3389 A move-only iterator still does not have a counted_iterator Prague Complete 15.0 ranges
3390 make_move_iterator() cannot be used to construct a move_iterator for a move-only iterator Prague Complete 14.0 ranges
3393 Missing/incorrect feature test macro for coroutines Prague Complete 14.0  
3395 Definition for three-way comparison needs to be updated (US 152) Prague     spaceship
3396 Clarify point of reference for source_location::current() (DE 169) Prague Nothing To Do 16.0  
3397 ranges::basic_istream_view::iterator should not provide iterator_category Prague Complete 16.0 ranges
3398 tuple_element_t is also wrong for const subrange Prague Complete 14.0 ranges
3446 indirectly_readable_traits ambiguity for types with both value_type and element_type November virtual meeting Complete 13.0 ranges