C++ Standard Library Issues List (Revision D125)

Index by Section

Reference ISO/IEC IS 14882:2024(E)

This document is the Index by Section for the Library Active Issues List, Library Defect Reports and Accepted Issues, and Library Closed Issues List.

Index by Section

(view only non-Ready open issues)

Revised 2024-12-06 at 21:10:13 UTC

Section 2 (2 issues)

Issue Status Section Title Proposed Resolution Priority Duplicates
571(i) NAD Editorial 2 [intro.refs] Update C90 references to C99? Yes
653(i) NAD 2 [intro.refs] Library reserved names Yes

Section 3 (6 issues)

(view only non-Ready open issues)

Issue Status Section Title Proposed Resolution Priority Duplicates
2872(i) C++17 3 [intro.defs] Add definition for direct-non-list-initialization Yes
1354(i) C++11 3.15 [defns.deadlock] The definition of deadlock excludes cases involving a single thread Yes
2392(i) WP 3.35 [defns.ntcts] "character type" is used but not defined Yes 3
3119(i) C++20 3.41 [defns.prog.def.spec] Program-definedness of closure types Yes 2
3513(i) New 3.42 [defns.prog.def.type] Fix definition of program-defined based on its uses Yes 3
4005(i) New 3.47 [defns.required.behavior] "Required behavior" too narrowly defined No 2

Section 4 (1 issues)

(view only non-Ready open issues)

Issue Status Section Title Proposed Resolution Priority Duplicates
3669(i) New 4.1.2 [intro.abstract] std::filesystem operations should be observable behaviour No 3

Section 6 (4 issues)

(view only non-Ready open issues)

Issue Status Section Title Proposed Resolution Priority Duplicates
873(i) NAD Editorial 6.8.2 [basic.fundamental] signed integral type and unsigned integral type are not clearly defined Yes
2506(i) SG1 6.9.2 [intro.multithread] Underspecification of atomics No 3
2075(i) Resolved 6.9.2 [intro.multithread] Progress guarantees, lock-free property, and scheduling assumptions Yes
462(i) NAD 6.9.3.4 [basic.start.term] Destroying objects with static storage duration Yes

Section 16 (226 issues)

(view only non-Ready open issues)

Issue Status Section Title Proposed Resolution Priority Duplicates
3105(i) New 16 [library] T1 is convertible to T2 No 3
2949(i) New 16 [library] Unclear complexity requirements: space vs. time No 4
1195(i) C++11 16 [library] "Diagnostic required" wording is insufficient to prevent UB Yes
1349(i) C++11 16 [library] swap should not throw Yes
182(i) CD1 16 [library] Ambiguous references to size_t Yes
230(i) CD1 16 [library] Assignable specified without also specifying CopyConstructible Yes
336(i) CD1 16 [library] Clause 17 lack of references to deprecated headers Yes
2925(i) Resolved 16 [library] Template argument deduction is not used in the standard library Yes
343(i) Resolved 16 [library] Unspecified library header dependencies Yes
625(i) Resolved 16 [library] Mixed up Effects and Returns clauses Yes 895
1151(i) Resolved 16 [library] Behavior of the library in the presence of threads is incompletely specified Yes
1344(i) Resolved 16 [library] Replace throw() with noexcept Yes 1351
1345(i) Resolved 16 [library] Library classes should have noexcept move operations Yes
1346(i) Resolved 16 [library] Apply noexcept where library specification does not permit exceptions Yes 1352
1347(i) Resolved 16 [library] Apply noexcept judiciously throughout the library Yes
1353(i) Resolved 16 [library] Clarify the state of a moved-from object Yes
972(i) NAD Editorial 16 [library] The term "Assignable" undefined but still in use Yes
1232(i) NAD Editorial 16 [library] Still swap's with rvalue-references Yes
877(i) NAD 16 [library] to throw() or to Throw: Nothing. Yes
2898(i) NAD 16 [library] Prefer not to use member typedefs as constructor parameters Yes
2865(i) NAD 16 [library] Resolve all open Library issues for C++17 Yes
1173(i) NAD 16 [library] "Equivalence" wishy-washiness Yes 3
385(i) NAD 16 [library] Does call by value imply the CopyConstructible requirement? Yes
941(i) NAD 16 [library] Ref-qualifiers for assignment operators Yes
996(i) NAD 16 [library] Move operation not well specified Yes
1099(i) NAD 16 [library] Various issues Yes
1153(i) NAD 16 [library] Standard library needs review for constructors to be explicit to avoid treatment as initializer-list constructor Yes
1236(i) NAD 16 [library] reserved identifiers in programs not using the library Yes
1331(i) NAD 16 [library] incorporate move special member functions into library Yes
1348(i) NAD 16 [library] Exception safety of unspecified types Yes
1350(i) Dup 16 [library] Implicit contructors accidentally made some library types move-only Yes 1421
1351(i) Dup 16 [library] Replace dynamic exception specifications with noexcept Yes 1344
1352(i) Dup 16 [library] Apply noexcept where library specification says "Throws: Nothing" Yes 1346
989(i) NAD Concepts 16 [library] late_check and library Yes
1001(i) NAD Concepts 16 [library] Pointers, concepts and headers Yes
1096(i) NAD Concepts 16 [library] unconstrained rvalue ref parameters Yes
3538(i) New 16.2 [library.c] §[library.c] C library functions are not addressable No 2
2136(i) Open 16.3.2 [structure] Postconditions vs. exceptions Yes 3
424(i) NAD Editorial 16.3.2.2 [structure.summary] normative notes Yes
3556(i) New 16.3.2.3 [structure.requirements] Specification of when semantic constraints are imposed by use of concepts is unclear No 3
995(i) NAD 16.3.2.3 [structure.requirements] Operational Semantics Unclear Yes
3193(i) New 16.3.2.4 [structure.specifications] Mandates: and Expects: elements are not defined for types Yes 3
3401(i) New 16.3.2.4 [structure.specifications] Is "as if by" equivalent to "equivalent to"? No 3
2679(i) C++17 16.3.2.4 [structure.specifications] Inconsistent Use of Effects and Equivalent To Yes 3
2710(i) C++17 16.3.2.4 [structure.specifications] "Effects: Equivalent to ..." doesn't count "Synchronization:" as determined semantics Yes 0
997(i) C++11 16.3.2.4 [structure.specifications] "Effects: Equivalent to" is underspecified Yes
222(i) TC1 16.3.2.4 [structure.specifications] Are throw clauses necessary if a throw is already implied by the effects clause? Yes
3168(i) Resolved 16.3.2.4 [structure.specifications] Expects: element should be specified in one place Yes 2
2292(i) Resolved 16.3.2.4 [structure.specifications] Find a better phrasing for "shall not participate in overload resolution" Yes 3
626(i) NAD Editorial 16.3.2.4 [structure.specifications] new Remark clauses not documented Yes
1179(i) NAD Editorial 16.3.2.4 [structure.specifications] Probably editorial in [structure.specifications] Yes
492(i) NAD 16.3.2.4 [structure.specifications] Invalid iterator arithmetic expressions Yes
663(i) NAD 16.3.2.4 [structure.specifications] Complexity Requirements Yes
895(i) Dup 16.3.2.4 [structure.specifications] "Requires:" on std::string::at et al Yes 625
3818(i) C++23 16.3.3 [conventions] Exposition-only concepts are not described in library intro Yes
3724(i) C++23 16.3.3.2 [expos.only.entity] decay-copy should be constrained Yes 3
2999(i) Resolved 16.3.3.2 [expos.only.entity] §[thread.decaycopy] issue Yes 3
1156(i) NAD 16.3.3.3.2 [enumerated.types] Constraints on bitmask and enumeration types to be tightened Yes
3977(i) New 16.3.3.3.3 [bitmask.types] constexpr and noexcept for operators for bitmask types Yes 3
3092(i) Open 16.3.3.3.3 [bitmask.types] Unclear semantics of enum class bitmask types Yes 3
262(i) CD1 16.3.3.3.3 [bitmask.types] Bitmask operator ~ specified incorrectly Yes
1357(i) Resolved 16.3.3.3.3 [bitmask.types] Library bitmask types to not satisfy the bimask type requirements Yes
2692(i) NAD 16.3.3.3.3 [bitmask.types] Overspecification of lvalueness of bitmask elements Yes 3
3620(i) New 16.3.3.3.4.1 [character.seq.general] What are execution character sets and execution wide-character sets (after P2314R4)? No 3
1060(i) NAD Editorial 16.3.3.3.4.2 [byte.strings] Embedded nulls in NTBS Yes
3285(i) C++20 16.3.3.3.5 [customization.point.object] The type of a customization point object shall satisfy semiregular Yes 0
3510(i) Resolved 16.3.3.3.5 [customization.point.object] Customization point objects should be invocable as non-const too Yes 3
3753(i) C++23 16.3.3.6 [freestanding.item] Clarify entity vs. freestanding entity Yes 2
3815(i) Resolved 16.3.3.6 [freestanding.item] Freestanding enumerators specification is lacking Yes
4049(i) New 16.4.2 [organization] C <foo.h> headers not in freestanding Yes 3
3690(i) New 16.4.2.2 [contents] std::make_from_tuple etc. should find all tuple-like std::get overloads Yes 3
2818(i) C++23 16.4.2.2 [contents] "::std::" everywhere rule needs tweaking Yes 2
1065(i) C++11 16.4.2.2 [contents] Allow inline namespaces within namespace std for implementations Yes
229(i) CD1 16.4.2.2 [contents] Unqualified references of other library entities Yes
992(i) NAD 16.4.2.2 [contents] Allow implementations to implement C library in the global namespace Yes
2380(i) C++17 16.4.2.3 [headers] May <cstdlib> provide long ::abs(long) and long long ::abs(long long)? Yes 2
310(i) CD1 16.4.2.3 [headers] Is errno a macro? Yes
456(i) CD1 16.4.2.3 [headers] Traditional C header files are overspecified Yes
465(i) CD1 16.4.2.3 [headers] Contents of <ciso646> Yes
1002(i) NAD 16.4.2.3 [headers] Provide bulk include headers Yes
3784(i) C++23 16.4.2.4 [std.modules] std.compat should not provide ::byte and its friends Yes
3871(i) C++23 16.4.2.5 [compliance] Adjust note about terminate Yes
3148(i) C++20 16.4.2.5 [compliance] <concepts> should be freestanding Yes 0
1264(i) C++11 16.4.2.5 [compliance] quick_exit support for freestanding implementations Yes
1360(i) C++11 16.4.2.5 [compliance] Add <atomic> to free-standing implementations Yes
833(i) NAD 16.4.2.5 [compliance] Freestanding implementations header list needs review for C++0x Yes
1003(i) NAD 16.4.2.5 [compliance] Require more useful headers for freestanding implementations Yes
1358(i) NAD 16.4.2.5 [compliance] Add <chrono> and <ratio> to freestanding implementations Yes
1359(i) NAD 16.4.2.5 [compliance] Add <tuple> and <utility> to freestanding implementations Yes
1361(i) NAD 16.4.3 [using] Does use of std::size_t in a header imply that typedef name is available to users? Yes
3240(i) New 16.4.3.2 [using.headers] Headers declare more than entities No 3
2428(i) C++17 16.4.3.2 [using.headers] "External declaration" used without being defined Yes 0
2225(i) C++14 16.4.3.2 [using.headers] Unrealistic header inclusion checks required Yes
657(i) NAD 16.4.3.2 [using.headers] unclear requirement about header inclusion Yes
1(i) TC1 16.4.3.3 [using.linkage] C library linkage editing oversight Yes
2281(i) NAD Editorial 16.4.3.3 [using.linkage] C99 cross-reference typo in [using.linkage] Yes
3640(i) New 16.4.4 [utility.requirements] Clarify which exceptions are propagated Yes 3
4075(i) SG1 16.4.4 [utility.requirements] Thread stability requirement on constructors and destructors No 3
2146(i) Open 16.4.4.2 [utility.arg.requirements] Are reference types CopyConstructible/MoveConstructible/CopyAssignable/MoveAssignable/Destructible? No 3
2170(i) C++17 16.4.4.2 [utility.arg.requirements] Aggregates cannot be DefaultConstructible Yes 2
724(i) C++11 16.4.4.2 [utility.arg.requirements] DefaultConstructible is not defined Yes
753(i) C++11 16.4.4.2 [utility.arg.requirements] Move constructor in draft Yes
1309(i) C++11 16.4.4.2 [utility.arg.requirements] Missing expressions for Move/CopyConstructible Yes
672(i) CD1 16.4.4.2 [utility.arg.requirements] Swappable requirements need updating Yes
594(i) Resolved 16.4.4.2 [utility.arg.requirements] Disadvantages of defining Swappable in terms of CopyConstructible and Assignable Yes
742(i) Resolved 16.4.4.2 [utility.arg.requirements] Enabling swap for proxy iterators Yes
1283(i) Resolved 16.4.4.2 [utility.arg.requirements] MoveConstructible and MoveAssignable need clarification of moved-from state Yes
1322(i) Resolved 16.4.4.2 [utility.arg.requirements] Explicit CopyConstructible requirements are insufficient Yes
390(i) NAD Editorial 16.4.4.2 [utility.arg.requirements] CopyConstructible requirements too strict Yes
822(i) NAD 16.4.4.2 [utility.arg.requirements] Object with explicit copy constructor no longer CopyConstructible Yes
1374(i) NAD 16.4.4.2 [utility.arg.requirements] Clarify moved-from objects are "toxic" Yes
910(i) NAD Concepts 16.4.4.2 [utility.arg.requirements] Effects of MoveAssignable Yes
2152(i) LEWG 16.4.4.3 [swappable.requirements] Instances of standard container types are not swappable Yes 3
2171(i) NAD 16.4.4.3 [swappable.requirements] "swappable" undefined for swapping lvalue and rvalue Yes
4155(i) New 16.4.4.4 [nullablepointer.requirements] Cpp17NullablePointer should require that some expression can be contextually converted to bool Yes 3
2114(i) Resolved 16.4.4.4 [nullablepointer.requirements] Incorrect "contextually convertible to bool" requirements Yes 3
2291(i) C++14 16.4.4.5 [hash.requirements] std::hash is vulnerable to collision DoS attack Yes
1332(i) C++11 16.4.4.5 [hash.requirements] Let Hash objects throw! Yes
3044(i) New 16.4.4.6 [allocator.requirements] Strange specification of max_size() for an allocator Yes 3
3267(i) New 16.4.4.6 [allocator.requirements] Rebound allocators and is_always_equal Yes 4
3157(i) New 16.4.4.6 [allocator.requirements] Allocator destroy and fancy pointer operations must be non-throwing Yes 3
2461(i) New 16.4.4.6 [allocator.requirements] Interaction between allocators and container exception safety guarantees No 3
2178(i) Pending NAD Editorial 16.4.4.6 [allocator.requirements] Allocator requirement changes not mentioned Annex C Yes 3
2593(i) C++20 16.4.4.6 [allocator.requirements] Moved-from state of Allocators Yes 4
3315(i) C++20 16.4.4.6 [allocator.requirements] Correct Allocator Default Behavior Yes 0
2016(i) C++17 16.4.4.6 [allocator.requirements] Allocators must be no-throw swappable Yes 2
2260(i) C++17 16.4.4.6 [allocator.requirements] Missing requirement for Allocator::pointer Yes 3
2384(i) C++17 16.4.4.6 [allocator.requirements] Allocator's deallocate function needs better specification Yes 3
2447(i) C++17 16.4.4.6 [allocator.requirements] Allocators and volatile-qualified value types Yes 4
2455(i) C++17 16.4.4.6 [allocator.requirements] Allocator default construction should be allowed to throw Yes
2466(i) C++17 16.4.4.6 [allocator.requirements] allocator_traits::max_size() default behavior is incorrect Yes 3
2467(i) C++17 16.4.4.6 [allocator.requirements] is_always_equal has slightly inconsistent default Yes 0
2470(i) C++17 16.4.4.6 [allocator.requirements] Allocator's destroy function should be allowed to fail to instantiate Yes
2065(i) C++14 16.4.4.6 [allocator.requirements] Minimal allocator interface Yes
2081(i) C++14 16.4.4.6 [allocator.requirements] Allocator requirements should include CopyConstructible Yes
2147(i) C++14 16.4.4.6 [allocator.requirements] Unclear hint type in Allocator's allocate function Yes
2162(i) C++14 16.4.4.6 [allocator.requirements] allocator_traits::max_size missing noexcept Yes
2263(i) C++14 16.4.4.6 [allocator.requirements] Comparing iterators and allocator pointers with different const-character Yes 1
752(i) C++11 16.4.4.6 [allocator.requirements] Allocator complexity requirement Yes
258(i) CD1 16.4.4.6 [allocator.requirements] Missing allocator requirement Yes
274(i) CD1 16.4.4.6 [allocator.requirements] a missing/impossible allocator requirement Yes
401(i) CD1 16.4.4.6 [allocator.requirements] incorrect type casts in table 32 in lib.allocator.requirements Yes
402(i) CD1 16.4.4.6 [allocator.requirements] wrong new expression in [some_]allocator::construct Yes
199(i) TC1 16.4.4.6 [allocator.requirements] What does allocate(0) return? Yes
2108(i) Resolved 16.4.4.6 [allocator.requirements] No way to identify allocator types that always compare equal Yes 3
431(i) Resolved 16.4.4.6 [allocator.requirements] Swapping containers with unequal allocators Yes
635(i) Resolved 16.4.4.6 [allocator.requirements] domain of allocator::address Yes
12(i) NAD 16.4.4.6 [allocator.requirements] Way objects hold allocators unclear Yes
197(i) NAD 16.4.4.6 [allocator.requirements] max_size() underspecified Yes
277(i) NAD 16.4.4.6 [allocator.requirements] Normative encouragement in allocator requirements unclear Yes
487(i) NAD 16.4.4.6 [allocator.requirements] Allocator::construct is too limiting Yes
560(i) NAD 16.4.4.6 [allocator.requirements] User-defined allocators without default constructor Yes
1376(i) NAD 16.4.4.6 [allocator.requirements] Allocator interface is not backward compatible Yes
2311(i) NAD 16.4.4.6 [allocator.requirements] Allocator requirements should be further minimized Yes 2
1375(i) Dup 16.4.4.6 [allocator.requirements] reference_type should not have been removed from the allocator requirements Yes 1318
4128(i) New 16.4.4.6.1 [allocator.requirements.general] Allocator requirements should not allow rebinding conversions to be explicit Yes 3
4065(i) New 16.4.4.6.1 [allocator.requirements.general] Requirements for fancy pointers might be insufficient for self-referential implementation of containers Yes 3
3682(i) New 16.4.4.6.1 [allocator.requirements.general] A Cpp17Allocator type can't silently ignore an unsupported alignment No 3
3775(i) C++23 16.4.4.6.1 [allocator.requirements.general] Broken dependencies in the Cpp17Allocator requirements Yes
2954(i) C++20 16.4.5 [constraints] Specialization of the convenience variable templates should be prohibited Yes
4047(i) New 16.4.5.2.1 [namespace.std] Explicitly specifying template arguments for std::swap should not be supported No 4
3926(i) New 16.4.5.2.1 [namespace.std] Which namespace std is the mentioned one? Yes 4
3177(i) C++23 16.4.5.2.1 [namespace.std] Limit permission to specialize variable templates to program-defined types Yes 3
3441(i) C++23 16.4.5.2.1 [namespace.std] Misleading note about calls to customization points Yes 1
2139(i) C++20 16.4.5.2.1 [namespace.std] What is a user-defined type? Yes 4
2129(i) C++17 16.4.5.2.1 [namespace.std] User specializations of std::initializer_list Yes 3
1157(i) C++11 16.4.5.2.1 [namespace.std] Local types can now instantiate templates Yes
3442(i) Resolved 16.4.5.2.1 [namespace.std] Unsatisfiable suggested implementation of customization points Yes 1
3928(i) New 16.4.5.2.2 [namespace.posix] Non-top-level namespace posix shouldn't be reserved Yes 3
3550(i) New 16.4.5.3 [reserved.names] Names reserved by C for standard library not reserved by C++ No 3
120(i) CD1 16.4.5.3 [reserved.names] Can an implementor add specializations? Yes
226(i) CD1 16.4.5.3 [reserved.names] User supplied specializations or overloads of namespace std function templates Yes
232(i) CD1 16.4.5.3 [reserved.names] "depends" poorly defined in 17.4.3.1 Yes
422(i) CD1 16.4.5.3 [reserved.names] explicit specializations of member functions of class templates Yes
3885(i) WP 16.4.5.3.2 [zombie.names] 'op' should be in [zombie.names] Yes
4149(i) New 16.4.5.3.3 [macro.names] User defined macros without standard headers (294 redux) Yes
4033(i) New 16.4.5.3.3 [macro.names] §[macro.names] defining macros after importing the standard library Yes 3
3132(i) C++20 16.4.5.3.3 [macro.names] Library needs to ban macros named expects or ensures Yes 0
3147(i) C++20 16.4.5.3.3 [macro.names] Definitions of "likely" and "unlikely" are likely to cause problems Yes 0
2014(i) C++11 16.4.5.3.3 [macro.names] More restrictions on macro names Yes
294(i) CD1 16.4.5.3.3 [macro.names] User defined macros and standard headers Yes
3920(i) New 16.4.5.3.4 [extern.names] Bad footnotes claiming external linkage for entities defined as macros No 3
2340(i) C++17 16.4.5.6 [replacement.functions] Replacement allocation functions declared as inline Yes 2
404(i) CD1 16.4.5.6 [replacement.functions] May a replacement allocation function be declared inline? Yes
3142(i) New 16.4.5.8 [res.on.functions] std::foo<incomplete> should be ill-formed NDR Yes 3
1004(i) C++11 16.4.5.8 [res.on.functions] Clarify "throws an exception" Yes
611(i) CD1 16.4.5.8 [res.on.functions] Standard library templates and incomplete types Yes
3511(i) New 16.4.5.9 [res.on.arguments] Clarify global permission to move Yes 3
2468(i) C++17 16.4.5.9 [res.on.arguments] Self-move-assignment of library types Yes 2
1362(i) C++11 16.4.5.9 [res.on.arguments] Description of binding to rvalue-references should use the new 'xvalue' vocabulary Yes
1204(i) C++11 16.4.5.9 [res.on.arguments] Global permission to move Yes
2224(i) C++17 16.4.5.10 [res.on.objects] Ambiguous status of access to non-live objects Yes 2
1095(i) C++11 16.4.5.10 [res.on.objects] Shared objects and the library wording unclear Yes
4068(i) New 16.4.5.11 [res.on.requirements] Terminology for objects whose types model a concept No
3429(i) New 16.4.5.11 [res.on.requirements] "models" should subsume like "satisfies" Yes 3
2112(i) C++14 16.4.6 [conforming] User-defined classes that cannot be derived from Yes 1
2891(i) NAD 16.4.6 [conforming] Relax library requirements on volatile types Yes
94(i) NAD 16.4.6 [conforming] May library implementors add template parameters to Standard Library classes? Yes
2113(i) NAD 16.4.6 [conforming] Do library implementers have the freedom to add final to non-polymorphic components? Yes
2373(i) NAD 16.4.6 [conforming] Make new entities and names in namespace std conforming extensions Yes 3
1178(i) C++11 16.4.6.2 [res.on.headers] Header dependencies Yes
4100(i) New 16.4.6.4 [global.functions] Default arguments and signatures of standard library non-member functions Yes 3
2133(i) C++17 16.4.6.4 [global.functions] Attitude to overloaded comma for iterators Yes 3
2795(i) C++17 16.4.6.4 [global.functions] §[global.functions] provides incorrect example of ADL use Yes
225(i) CD1 16.4.6.4 [global.functions] std:: algorithms use of other unqualified algorithms Yes
147(i) TC1 16.4.6.4 [global.functions] Library Intro refers to global functions that aren't global Yes
2930(i) NAD 16.4.6.4 [global.functions] Are implementations allowed to split non-member functions into several overloads? Yes
2695(i) New 16.4.6.5 [member.functions] "As if" unclear in [member.functions] No 3
2259(i) C++17 16.4.6.5 [member.functions] Issues in 17.6.5.5 rules for member functions Yes 3
2563(i) NAD 16.4.6.5 [member.functions] LWG 2259 relaxes requirements, perhaps unintentionally Yes 2
95(i) NAD 16.4.6.5 [member.functions] Members added by the implementation Yes
2013(i) C++14 16.4.6.7 [constexpr.functions] Do library implementers have the freedom to add constexpr? Yes
2892(i) NAD 16.4.6.7 [constexpr.functions] Relax the prohibition on libraries adding constexpr Yes 1
2044(i) C++14 16.4.6.8 [algorithm.stable] No definition of "Stable" for copy algorithms Yes
2414(i) Open 16.4.6.9 [reentrancy] Member function reentrancy should be implementation-defined Yes 3
2382(i) Pending NAD 16.4.6.9 [reentrancy] Unclear order of container update versus object destruction on removing an object Yes 2
4145(i) New 16.4.6.10 [res.on.data.races] Unclear how [res.on.data.races] apply to templated functions No 3
4129(i) New 16.4.6.10 [res.on.data.races] Possibly incorrect wording for data race avoidance Yes
1526(i) Resolved 16.4.6.10 [res.on.data.races] C++ should not impose thread safety requirements on C99 library implementations Yes 3
2866(i) C++17 16.4.6.12 [derivation] Incorrect derived classes constraints Yes
3854(i) New 16.4.6.13 [res.on.exception.handling] §[res.on.exception.handling]/3 should not be applied to all standard library types No 3
3229(i) New 16.4.6.13 [res.on.exception.handling] §[res.on.exception.handling]#3 cannot apply to types with implicitly declared destructors Yes 3
119(i) TC1 16.4.6.13 [res.on.exception.handling] Should virtual functions be allowed to strengthen the exception specification? Yes
2867(i) Resolved 16.4.6.13 [res.on.exception.handling] Bad footnote about explicit exception-specification Yes
372(i) NAD 16.4.6.13 [res.on.exception.handling] Inconsistent description of stdlib exceptions Yes
2839(i) C++23 16.4.6.15 [lib.types.movedfrom] Self-move-assignment of library types, again Yes 2

Section 17 (168 issues)

(view only non-Ready open issues)

Issue Status Section Title Proposed Resolution Priority Duplicates
1066(i) C++11 17 [support] Use [[noreturn]] attribute in the library Yes
2709(i) C++17 17.2 [support.types] offsetof is unnecessarily imprecise Yes 2
1097(i) C++11 17.2 [support.types] #define __STDCPP_THREADS Yes
1363(i) C++11 17.2 [support.types] offsetof should be marked noexcept Yes
306(i) CD1 17.2 [support.types] offsetof macro and non-POD types Yes
449(i) CD1 17.2 [support.types] Library Issue 306 Goes Too Far Yes
1314(i) NAD 17.2 [support.types] NULL and nullptr Yes
2251(i) NAD 17.2 [support.types] C++ library should define ssize_t Yes 3
2950(i) C++20 17.2.5 [support.types.byteops] std::byte operations are misspecified Yes 1
201(i) CD1 17.3 [support.limits] Numeric limits terminology wrong Yes
3217(i) New 17.3.1 [support.limits.general] <memory> and <execution> should define __cpp_lib_parallel_algorithm Yes 3
3137(i) C++20 17.3.1 [support.limits.general] Header for __cpp_lib_to_chars Yes 0
3122(i) C++20 17.3.1 [support.limits.general] __cpp_lib_chrono_udls was accidentally dropped Yes 0
3256(i) C++20 17.3.1 [support.limits.general] Feature testing macro for constexpr algorithms Yes 0
3257(i) C++20 17.3.1 [support.limits.general] Missing feature testing macro update from P0858 Yes 0
3274(i) C++20 17.3.1 [support.limits.general] Missing feature test macro for <span> Yes 0
3931(i) New 17.3.2 [version.syn] Too many paper bump __cpp_lib_ranges Yes 3
4126(i) WP 17.3.2 [version.syn] Some feature-test macros for fully freestanding features are not yet marked freestanding Yes 2
4076(i) WP 17.3.2 [version.syn] concat_view should be freestanding Yes
3887(i) WP 17.3.2 [version.syn] Version macro for allocate_at_least Yes
3841(i) C++23 17.3.2 [version.syn] <version> should not be "all freestanding" Yes
3437(i) C++23 17.3.2 [version.syn] __cpp_lib_polymorphic_allocator is in the wrong header Yes 0
3621(i) C++23 17.3.2 [version.syn] Remove feature-test macro __cpp_lib_monadic_optional Yes
3750(i) C++23 17.3.2 [version.syn] Too many papers bump __cpp_lib_format Yes
3751(i) C++23 17.3.2 [version.syn] Missing feature macro for flat_set Yes
3792(i) C++23 17.3.2 [version.syn] __cpp_lib_constexpr_algorithms should also be defined in <utility> Yes
3807(i) C++23 17.3.2 [version.syn] The feature test macro for ranges::find_last should be renamed Yes
3348(i) C++20 17.3.2 [version.syn] __cpp_lib_unwrap_ref in wrong header Yes 2
3349(i) C++20 17.3.2 [version.syn] Missing __cpp_lib_constexpr_complex for P0415R1 Yes 0
3356(i) C++20 17.3.2 [version.syn] __cpp_lib_nothrow_convertible should be __cpp_lib_is_nothrow_convertible Yes 0
3393(i) C++20 17.3.2 [version.syn] Missing/incorrect feature test macro for coroutines Yes 0
3635(i) NAD 17.3.2 [version.syn] Add __cpp_lib_deduction_guides to feature test macros Yes 3
3874(i) NAD 17.3.2 [version.syn] Rename __cpp_lib_ranges_to_container to __cpp_lib_ranges_to Yes
3808(i) NAD 17.3.2 [version.syn] Inconsistent feature test macros for ranges algorithms Yes
2248(i) New 17.3.5 [numeric.limits] numeric_limits::is_iec559 misnamed No 4
2730(i) Open 17.3.5 [numeric.limits] numeric_limits primary template definition No 3
559(i) CD1 17.3.5 [numeric.limits] numeric_limits<const T> Yes
902(i) NAD Concepts 17.3.5 [numeric.limits] Regular is the wrong concept to constrain numeric_limits Yes
1005(i) NAD Concepts 17.3.5 [numeric.limits] numeric_limits partial specializations not concept enabled Yes
3922(i) New 17.3.5.1 [numeric.limits.general] It's unclear whether numeric_limits can be specialized by users Yes 3
3923(i) New 17.3.5.1 [numeric.limits.general] The specification of numeric_limits doesn't clearly distinguish between implementation requirements and user requirements Yes 3
2422(i) C++17 17.3.5.2 [numeric.limits.members] std::numeric_limits<T>::is_modulo description: "most machines" errata Yes 2
497(i) CD1 17.3.5.2 [numeric.limits.members] meaning of numeric_limits::traps for floating point types Yes
612(i) CD1 17.3.5.2 [numeric.limits.members] numeric_limits::is_modulo insufficiently defined Yes
591(i) NAD Editorial 17.3.5.2 [numeric.limits.members] Misleading "built-in Yes
205(i) NAD 17.3.5.2 [numeric.limits.members] numeric_limits unclear on how to determine floating point types Yes
184(i) CD1 17.3.5.3 [numeric.special] numeric_limits<bool> wording problems Yes
613(i) CD1 17.3.5.3 [numeric.special] max_digits10 missing from numeric_limits Yes
554(i) NAD 17.3.5.3 [numeric.special] Problem with lwg DR 184 numeric_limits<bool> Yes
416(i) CD1 17.3.6 [climits.syn] definitions of XXX_MIN and XXX_MAX macros in climits Yes
3370(i) New 17.4.1 [cstdint.syn] §[cstdint.syn]p2 and §[headers]p5 are not sufficiently clear No 3
2820(i) C++23 17.4.1 [cstdint.syn] Clarify <cstdint> macros Yes 3
3828(i) C++23 17.4.1 [cstdint.syn] Sync intmax_t and uintmax_t with C2x Yes
593(i) CD1 17.4.1 [cstdint.syn] __STDC_CONSTANT_MACROS Yes
557(i) NAD Editorial 17.4.1 [cstdint.syn] TR1: div(_Longlong, _Longlong) vs div(intmax_t, intmax_t) Yes
553(i) NAD Editorial 17.4.1 [cstdint.syn] very minor editorial change intptr_t / uintptr_t Yes
841(i) NAD Editorial 17.4.1 [cstdint.syn] cstdint.syn inconsistent with C99 Yes
2764(i) Dup 17.4.1 [cstdint.syn] Are <cstddint> macros optional? Yes 3
3084(i) New 17.5 [support.start.term] Termination in C++ is unclear No 3
2815(i) New 17.5 [support.start.term] quick_exit can deadlock Yes 3
993(i) C++11 17.5 [support.start.term] _Exit needs better specification Yes
1144(i) C++11 17.5 [support.start.term] "thread safe" is undefined Yes
3(i) TC1 17.5 [support.start.term] Atexit registration during atexit() call is not described Yes
2458(i) C++17 17.6 [support.dynamic] N3778 and new library deallocation signatures Yes 2
2510(i) C++17 17.6 [support.dynamic] Tag types should not be DefaultConstructible Yes 2
3106(i) NAD 17.6.2 [new.syn] nothrow should be inline constexpr rather that extern const Yes 2
2425(i) C++17 17.6.3 [new.delete] operator delete(void*, size_t) doesn't invalidate pointers sufficiently Yes 0
1006(i) C++11 17.6.3 [new.delete] operator delete in garbage collected implementation Yes
9(i) TC1 17.6.3 [new.delete] Operator new(0) calls should not yield the same pointer Yes
2368(i) Resolved 17.6.3 [new.delete] Replacing global operator new Yes 2
3086(i) New 17.6.3.2 [new.delete.single] Possible problem in §[new.delete.single] Yes 3
2737(i) New 17.6.3.2 [new.delete.single] Consider relaxing object size restrictions for single-object allocation functions No 3
206(i) CD1 17.6.3.2 [new.delete.single] operator new(size_t, nothrow) may become unlinked to ordinary operator new if ordinary version replaced Yes
319(i) CD1 17.6.3.2 [new.delete.single] Storage allocation wording confuses "Required behavior", "Requires" Yes
627(i) NAD 17.6.3.2 [new.delete.single] Low memory and exceptions Yes
298(i) CD1 17.6.3.3 [new.delete.array] ::operator delete[] requirement incorrect/insufficient Yes
3789(i) NAD 17.6.3.3 [new.delete.array] Precondition of (not replaced) operator delete[] Yes
2303(i) New 17.6.3.4 [new.delete.placement] Explicit instantiation of std::vector<UserType> broken? No 3
2302(i) Pending NAD 17.6.3.4 [new.delete.placement] Passing null pointer to placement new Yes 2
114(i) TC1 17.6.3.4 [new.delete.placement] Placement forms example in error twice Yes 196
196(i) Dup 17.6.3.4 [new.delete.placement] Placement new example has alignment problems Yes 114
2508(i) New 17.6.3.5 [new.delete.dataraces] §[new.delete.dataraces] wording needs to be updated No 3
1524(i) C++11 17.6.3.5 [new.delete.dataraces] Allocation functions are missing happens-before requirements and guarantees Yes
1366(i) Resolved 17.6.3.5 [new.delete.dataraces] New-handler and data races Yes
1365(i) Resolved 17.6.4 [alloc.errors] Thread-safety of handler functions Yes
2378(i) C++17 17.6.4.1 [bad.alloc] Behaviour of standard exception types Yes 0
994(i) C++11 17.6.4.3 [new.handler] quick_exit should terminate well-defined Yes
4130(i) Open 17.6.5 [ptr.launder] Preconditions for std::launder might be overly strict Yes 3
3495(i) C++23 17.6.5 [ptr.launder] constexpr launder makes pointers to inactive members of unions usable Yes 3
2859(i) C++20 17.6.5 [ptr.launder] Definition of reachable in [ptr.launder] misses pointer arithmetic from pointer-interconvertible object Yes 2
2821(i) Resolved 17.6.5 [ptr.launder] std::launder() should be marked as [[nodiscard]] Yes 3
2860(i) NAD 17.6.5 [ptr.launder] launder and base class subobjects Yes 2
3624(i) New 17.7 [support.rtti] Inconsistency of <typeinfo>, <initializer_list>, and <compare> in the standard library Yes 3
2398(i) Open 17.7.3 [type.info] type_info's destructor shouldn't be required to be virtual Yes 3
108(i) TC1 17.7.3 [type.info] Lifetime of exception::what() return unspecified Yes
2144(i) C++14 17.7.7 [type.index] Missing noexcept specification in type_index Yes
1078(i) NAD Concepts 17.7.7 [type.index] DE-17: Remove class type_index Yes
3396(i) C++20 17.8.2.2 [support.srcloc.cons] Clarify point of reference for source_location::current() (DE 169) Yes 2
70(i) TC1 17.9 [support.exception] Uncaught_exception() missing throw() specification Yes
269(i) NAD 17.9 [support.exception] cstdarg and unnamed parameters Yes
4087(i) SG16 17.9.3 [exception] Standard exception messages have unspecified encoding Yes 3
471(i) C++11 17.9.3 [exception] result of what() implementation-defined Yes
266(i) CD1 17.9.4 [bad.exception] bad_exception::~bad_exception() missing Effects clause Yes
2088(i) Resolved 17.9.5 [exception.terminate] std::terminate problem Yes 3
2111(i) C++17 17.9.5.4 [terminate] Which unexpected/terminate handler is called from the exception handling runtime? Yes 3
313(i) NAD 17.9.5.4 [terminate] set_terminate and set_unexpected question Yes
314(i) NAD 17.9.5.4 [terminate] Is the stack unwound when terminate() is called? Yes
1130(i) C++11 17.9.7 [propagation] copy_exception name misleading Yes
744(i) CD1 17.9.7 [propagation] What is the lifetime of an exception pointed to by an exception_ptr? Yes
746(i) CD1 17.9.7 [propagation] current_exception may fail with bad_alloc Yes
820(i) CD1 17.9.7 [propagation] current_exception()'s interaction with throwing copy ctors Yes
829(i) CD1 17.9.7 [propagation] current_exception wording unclear about exception type Yes
1135(i) Resolved 17.9.7 [propagation] exception_ptr should support contextual conversion to bool Yes
1307(i) Resolved 17.9.7 [propagation] exception_ptr and allocator pointers don't understand != Yes
1364(i) Resolved 17.9.7 [propagation] It is not clear how exception_ptr is synchronized Yes
707(i) NAD 17.9.7 [propagation] null pointer constant for exception_ptr Yes
745(i) NAD 17.9.7 [propagation] copy_exception API slices. Yes
1369(i) NAD 17.9.7 [propagation] rethrow_exception may introduce data races Yes
2855(i) C++17 17.9.8 [except.nested] std::throw_with_nested("string_literal") Yes 0
2483(i) C++17 17.9.8 [except.nested] throw_with_nested() should use is_final Yes 2
2484(i) C++17 17.9.8 [except.nested] rethrow_if_nested() is doubly unimplementable Yes 2
2784(i) C++17 17.9.8 [except.nested] Resolution to LWG 2484 is missing "otherwise, no effects" and is hard to parse Yes 0
819(i) C++11 17.9.8 [except.nested] rethrow_if_nested Yes
1136(i) C++11 17.9.8 [except.nested] Incomplete specification of nested_exception::rethrow_nested() Yes
1216(i) C++11 17.9.8 [except.nested] LWG 1066 Incomplete? Yes
1370(i) C++11 17.9.8 [except.nested] throw_with_nested should not use perfect forwarding Yes
1008(i) NAD 17.9.8 [except.nested] nested_exception wording unclear Yes
1132(i) NAD 17.9.8 [except.nested] JP-30: nested exceptions Yes
1007(i) NAD Concepts 17.9.8 [except.nested] throw_with_nested not concept enabled Yes
2453(i) New 17.10 [support.initlist] §[iterator.range] and now [iterator.container] aren't available via <initializer_list> No 3
2493(i) New 17.10 [support.initlist] initializer_list supports incomplete classes No 4
2432(i) NAD 17.10 [support.initlist] initializer_list assignability Yes 2
906(i) NAD Concepts 17.10 [support.initlist] ObjectType is the wrong concept to constrain initializer_list Yes
4051(i) New 17.11.2 [cmp.categories] A less hacky and more useful way to compare comparison category types Yes
3295(i) Resolved 17.11.2 [cmp.categories] Comparison category operator== are mis-specified Yes 1
3239(i) Resolved 17.11.2.2 [cmp.partialord] Hidden friends should be specified more narrowly Yes
3584(i) New 17.11.3 [cmp.common] Clarify common comparison category conversions Yes 3
3587(i) New 17.11.4 [cmp.concept] std::three_way_comparable_with<T, U, void> can be satisfied but can't be modeled No 3
3360(i) C++20 17.11.4 [cmp.concept] three_way_comparable_with is inconsistent with similar concepts Yes 0
3932(i) New 17.11.6 [cmp.alg] Expression-equivalence is sometimes unimplementable when passing prvalue expressions to comparison CPOs No 3
3491(i) New 17.11.6 [cmp.alg] What is a "decayed type"? No 3
4157(i) WP 17.11.6 [cmp.alg] The resolution of LWG3465 was damaged by P2167R3 Yes
3465(i) C++23 17.11.6 [cmp.alg] compare_partial_order_fallback requires F < E Yes 0
3324(i) C++20 17.11.6 [cmp.alg] Special-case std::strong/weak/partial_order for pointers Yes 0
3653(i) New 17.12.2 [coroutine.syn] <coroutine> is freestanding, but uses std::hash which is not No 3
3330(i) C++20 17.12.2 [coroutine.syn] Include <compare> from most library headers Yes 0
3469(i) Resolved 17.12.4.7 [coroutine.handle.promise] Precondition of coroutine_handle::promise may be insufficient Yes 2
3460(i) C++23 17.12.5.2.4 [coroutine.handle.noop.resumption] Unimplementable noop_coroutine_handle guarantees Yes 2
2099(i) C++14 17.13 [support.runtime] Unnecessary constraints of va_start() usage Yes
894(i) C++11 17.13 [support.runtime] longjmp and destructors Yes
619(i) CD1 17.13 [support.runtime] Longjmp wording problem Yes
2155(i) Resolved 17.13 [support.runtime] Macro __bool_true_false_are_defined should be removed Yes 4
2241(i) Resolved 17.13 [support.runtime] <cstdalign> and #define of alignof Yes 2
1265(i) NAD 17.13 [support.runtime] longjmp and destructors Yes
3945(i) New 17.13.2 [cstdarg.syn] §[cstdarg.syn] 'Compatible types' are undefined No 3
3652(i) NAD 17.13.3 [csetjmp.syn] Can we relax the preconditions of longjmp? Yes
2879(i) Resolved 17.13.4 [csignal.syn] Removing C dependencies from signal handler wording Yes
3756(i) C++23 17.13.5 [support.signal] Is the std::atomic_flag class signal-safe? Yes 3
2536(i) C++17 17.14 [support.c.headers] What should <complex.h> do? Yes 2
2835(i) C++17 17.14 [support.c.headers] LWG 2536 seems to misspecify <tgmath.h> Yes 0
551(i) CD1 17.14 [support.c.headers] <ccomplex> Yes
143(i) NAD 17.14 [support.c.headers] C .h header wording unclear Yes
3954(i) New 17.14.1 [support.c.headers.general] Feature-test macros in C headers (<stddef.h> etc.) No 3
3827(i) C++23 17.14.4 [stdalign.h.syn] Deprecate <stdalign.h> and <stdbool.h> macros Yes
3883(i) New 17.14.7 [support.c.headers.other] §[support.c.headers.other] Ambiguity in the requirements for includes Yes 4
3799(i) New 17.14.7 [support.c.headers.other] Should <math.h> provide 3-argument ::hypot overloads? No 3
3484(i) New 17.14.7 [support.c.headers.other] Should <stddef.h> declare ::nullptr_t? Yes 3
3782(i) C++23 17.14.7 [support.c.headers.other] Should <math.h> declare ::lerp? Yes

Section 18 (20 issues)

(view only non-Ready open issues)

Issue Status Section Title Proposed Resolution Priority Duplicates
3895(i) New 18.3 [concepts.syn] Various relation concepts are missing default values of the second template parameters Yes 3
3182(i) C++20 18.4.2 [concept.same] Specification of Same could be clearer Yes 0
3608(i) New 18.4.4 [concept.convertible] convertible_to and temporary-bound references No 3
3459(i) New 18.4.4 [concept.convertible] Why doesn't std::convertible_to have semantic requirement when To is reference-to-function type? No 3
3461(i) C++23 18.4.4 [concept.convertible] convertible_to's description mishandles cv-qualified void Yes 0
3557(i) C++23 18.4.4 [concept.convertible] The static_cast expression in convertible_to has the wrong operand Yes
3194(i) C++20 18.4.4 [concept.convertible] ConvertibleTo prose does not match code Yes 1
3151(i) Resolved 18.4.4 [concept.convertible] ConvertibleTo rejects conversions from array and function types Yes 3
3153(i) C++20 18.4.6 [concept.common] Common and common_type have too little in common Yes 0
3154(i) C++20 18.4.6 [concept.common] Common and CommonReference have a common defect Yes 0
4165(i) New 18.4.9 [concept.swappable] Should swapping a built-in array or std::array with itself result in UB? No
4041(i) New 18.4.9 [concept.swappable] The requirements on literal type in [concept.swappable] should be removed Yes 4
3175(i) C++20 18.4.9 [concept.swappable] The CommonReference requirement of concept SwappableWith is not satisfied in the example Yes 1
3345(i) Resolved 18.4.9 [concept.swappable] Incorrect usages of "models" versus "satisfies" Yes 2
3149(i) C++20 18.4.12 [concept.default.init] DefaultConstructible should require default initialization Yes 2
3338(i) C++20 18.4.12 [concept.default.init] Rename default_constructible to default_initializable Yes 0
3421(i) C++23 18.5.2 [concept.booleantestable] Imperfect ADL emulation for boolean-testable Yes 0
3329(i) C++20 18.5.5 [concept.totallyordered] totally_ordered_with both directly and indirectly requires common_reference_with Yes 0
3331(i) C++20 18.5.5 [concept.totallyordered] Define totally_ordered/_with in terms of partially-ordered-with Yes 0
3141(i) C++20 18.6 [concepts.object] CopyConstructible doesn't preserve source values Yes 2

Section 19 (37 issues)

(view only non-Ready open issues)

Issue Status Section Title Proposed Resolution Priority Duplicates
1371(i) NAD 19 [diagnostics] Standard exceptions require stronger no-throw guarantees Yes
254(i) CD1 19.2 [std.exceptions] Exception types in clause 19 are constructed from std::string Yes
2073(i) NAD 19.2 [std.exceptions] Library exceptions that take string arguments Yes
3011(i) Open 19.3 [assertions] Requirements for assert(E) inconsistent with C No 2
2234(i) C++17 19.3 [assertions] assert() should allow usage in constant expressions Yes 2
2559(i) C++17 19.3 [assertions] Error in LWG 2234's resolution Yes 0
2413(i) NAD 19.3 [assertions] assert macro is overconstrained Yes 4
288(i) CD1 19.4 [errno] <cerrno> requirements missing macro EILSEQ Yes
3629(i) C++23 19.5 [syserr] make_error_code and make_error_condition are customization points Yes 2
1237(i) C++11 19.5 [syserr] Constrained error_code/error_condition members Yes
804(i) CD1 19.5 [syserr] Some problems with classes error_code/error_condition Yes
805(i) CD1 19.5 [syserr] posix_error::posix_errno concerns Yes
697(i) Resolved 19.5 [syserr] New <system_error> header leads to name clashes Yes
832(i) NAD 19.5 [syserr] Applying constexpr to System error support Yes
3869(i) C++23 19.5.2 [system.error.syn] Deprecate std::errc constants related to UNIX STREAMS Yes
2686(i) C++17 19.5.2 [system.error.syn] Why is std::hash specialized for error_code, but not error_condition? Yes 3
2145(i) C++14 19.5.3 [syserr.errcat] error_category default constructor Yes
890(i) C++11 19.5.3 [syserr.errcat] Improving <system_error> initialization Yes
4156(i) New 19.5.3.2 [syserr.errcat.virtuals] error_category messages have unspecified encoding Yes
3019(i) New 19.5.3.4 [syserr.errcat.derived] Presentation of "program defined classes derived from error_category" [syserr.errcat.derived] unclear and contains mistakes No 3
3598(i) C++23 19.5.3.5 [syserr.errcat.objects] system_category().default_error_condition(0) is underspecified Yes
1372(i) C++11 19.5.3.5 [syserr.errcat.objects] Adopt recommended practice for standard error categories Yes
2992(i) NAD 19.5.3.5 [syserr.errcat.objects] system_category() and error_code::error_code() should be constexpr Yes
3053(i) New 19.5.4.1 [syserr.errcode.overview] Prohibit error_code construction from rvalues of error_category Yes 3
825(i) Resolved 19.5.4.1 [syserr.errcode.overview] Missing rvalues reference stream insert/extract operators? Yes
1229(i) Resolved 19.5.4.3 [syserr.errcode.modifiers] error_code operator= typo Yes
971(i) NAD 19.5.4.5 [syserr.errcode.nonmembers] Spurious diagnostic conversion function Yes
2109(i) C++14 19.5.7 [syserr.hash] Incorrect requirements for hash specializations Yes
698(i) CD1 19.5.8.1 [syserr.syserr.overview] system_error needs const char* constructors Yes
3162(i) New 19.5.8.2 [syserr.syserr.members] system_error::system_error(error_code ec) not explicit Yes 3
3112(i) C++20 19.5.8.2 [syserr.syserr.members] system_error and filesystem_error constructors taking a string may not be able to meet their postconditions Yes 0
1103(i) C++11 19.5.8.2 [syserr.syserr.members] system_error constructor postcondition overly strict Yes
3625(i) New 19.6.2 [stacktrace.syn] Should <stacktrace> provide range access function templates? Yes 3
3515(i) C++23 19.6.2 [stacktrace.syn] §[stacktrace.basic.nonmem]: operator<< should be less templatized Yes 2
3514(i) Resolved 19.6.2 [stacktrace.syn] stacktrace should add type alias pmr::stacktrace Yes 3
3507(i) Open 19.6.3.4 [stacktrace.entry.query] P0881R7 ("stacktrace") does not define "actual file name", "actual line number" No 2
3626(i) New 19.6.4.1 [stacktrace.basic.overview] Is std::basic_stacktrace required to use contiguous storage? Yes 3

Section 20 (207 issues)

(view only non-Ready open issues)

Issue Status Section Title Proposed Resolution Priority Duplicates
1073(i) C++11 20.2 [memory] Declaration of allocator_arg should be constexpr Yes
1401(i) C++11 20.2 [memory] Provide support for unique_ptr<T> == nullptr Yes
1402(i) C++11 20.2 [memory] nullptr constructors for smart pointers should be constexpr Yes
1233(i) NAD Editorial 20.2 [memory] Missing unique_ptr signatures in synopsis Yes
1026(i) NAD Concepts 20.2 [memory] Smart pointers need to be concept-constrained templates Yes
3552(i) C++23 20.2.2 [memory.syn] Parallel specialized memory algorithms should require forward iterators Yes
3814(i) C++23 20.2.2 [memory.syn] Add freestanding items requested by NB comments Yes
3303(i) C++20 20.2.2 [memory.syn] Bad "constexpr" marker for destroy/destroy_n Yes 0
3454(i) Open 20.2.3 [pointer.traits] pointer_traits::pointer_to should be constexpr Yes
3545(i) C++23 20.2.3 [pointer.traits] std::pointer_traits should be SFINAE-friendly Yes 2
1404(i) C++11 20.2.3 [pointer.traits] pointer_traits should have a size_type member Yes
4058(i) New 20.2.4 [pointer.conversion] std::to_address() should be SFINAE-friendly Yes
3374(i) C++20 20.2.4 [pointer.conversion] P0653 + P1006 should have made the other std::to_address overload constexpr Yes 0
2421(i) New 20.2.5 [ptr.align] Non-specification of handling zero size in std::align [ptr.align] No 3
2377(i) C++17 20.2.5 [ptr.align] std::align requirements overly strict Yes 0
4168(i) New 20.2.6 [obj.lifetime] std::start_lifetime_as inadvertently has undefined behavior due to use of std::bit_cast Yes
1403(i) C++11 20.2.7 [allocator.tag] Inconsistent definitions for allocator_arg Yes
3901(i) NAD 20.2.8 [allocator.uses] Is uses-allocator construction of a cv-qualified object type still well-formed after LWG 3870? Yes
3192(i) New 20.2.8.2 [allocator.uses.construction] §[allocator.uses.construction] functions misbehave for const types Yes 3
3525(i) C++23 20.2.8.2 [allocator.uses.construction] uses_allocator_construction_args fails to handle types convertible to pair Yes 3
3526(i) C++23 20.2.8.2 [allocator.uses.construction] Return types of uses_allocator_construction_args unspecified Yes 3
3527(i) C++23 20.2.8.2 [allocator.uses.construction] uses_allocator_construction_args handles rvalue pairs of rvalue references incorrectly Yes
3677(i) C++23 20.2.8.2 [allocator.uses.construction] Is a cv-qualified pair specially handled in uses-allocator construction? Yes 2
3821(i) C++23 20.2.8.2 [allocator.uses.construction] uses_allocator_construction_args should have overload for pair-like Yes 2
3185(i) C++20 20.2.8.2 [allocator.uses.construction] Uses-allocator construction functions missing constexpr and noexcept Yes 0
3187(i) C++20 20.2.8.2 [allocator.uses.construction] P0591R4 reverted DR 2586 fixes to scoped_allocator_adaptor::construct() Yes
3321(i) C++20 20.2.8.2 [allocator.uses.construction] uninitialized_construct_using_allocator should use construct_at Yes 0
2284(i) C++14 20.2.9 [allocator.traits] Inconsistency in allocator_traits::max_size Yes
3665(i) New 20.2.9.2 [allocator.traits.types] Is std::allocator_traits<Alloc>::rebind_alloc SFINAE-friendly? No 3
1318(i) NAD 20.2.9.2 [allocator.traits.types] N2982 removes previous allocator capabilities Yes 1375
1285(i) C++11 20.2.9.3 [allocator.traits.members] allocator_traits call to new Yes
1286(i) C++11 20.2.9.3 [allocator.traits.members] allocator_traits::select_on_container_copy_construction type-o Yes
3916(i) New 20.2.10 [default.allocator] allocator, polymorphic_allocator, and containers should forbid cv-qualified types No 3
3917(i) New 20.2.10 [default.allocator] Validity of allocator<void> and possibly polymorphic_allocator<void> should be clarified Yes 3
3170(i) C++23 20.2.10 [default.allocator] is_always_equal added to std::allocator makes the standard library treat derived types as always equal Yes 2
3035(i) C++20 20.2.10 [default.allocator] std::allocator's constructors should be constexpr Yes 0
3307(i) C++20 20.2.10 [default.allocator] std::allocator<void>().allocate(n) Yes 0
2103(i) C++14 20.2.10 [default.allocator] std::allocator_traits<std::allocator<T>>::propagate_on_container_move_assignment Yes
1027(i) NAD Concepts 20.2.10 [default.allocator] std::allocator needs to be a concept-constrained template Yes
3684(i) New 20.2.10.2 [allocator.members] std::allocator<T>::allocate_at_least in constant evaluation Yes 3
3190(i) C++20 20.2.10.2 [allocator.members] std::allocator::allocate sometimes returns too little storage Yes 3
234(i) CD1 20.2.10.2 [allocator.members] Typos in allocator definition Yes
400(i) CD1 20.2.10.2 [allocator.members] redundant type cast in lib.allocator.members Yes
578(i) CD1 20.2.10.2 [allocator.members] purpose of hint to allocator::allocate() Yes
634(i) CD1 20.2.10.2 [allocator.members] allocator.address() doesn't work for types overloading operator& Yes 350
2089(i) Resolved 20.2.10.2 [allocator.members] std::allocator::construct should use uniform initialization Yes 2
350(i) Dup 20.2.10.2 [allocator.members] allocator<>::address Yes 634
2296(i) C++17 20.2.11 [specialized.addressof] std::addressof should be constexpr Yes 3
2598(i) C++17 20.2.11 [specialized.addressof] addressof works on temporaries Yes 3
970(i) C++11 20.2.11 [specialized.addressof] addressof overload unneeded Yes
2948(i) C++20 20.3.1 [unique.ptr] unique_ptr does not define operator<< for stream output Yes 0
673(i) CD1 20.3.1 [unique.ptr] unique_ptr update Yes
740(i) CD1 20.3.1 [unique.ptr] Please remove *_ptr<T[N]> Yes
762(i) CD1 20.3.1 [unique.ptr] std::unique_ptr requires complete type? Yes
1193(i) C++11 20.3.1.2 [unique.ptr.dltr] default_delete cannot be instantiated with incomplete types Yes
854(i) C++11 20.3.1.2.2 [unique.ptr.dltr.dflt] default_delete converting constructor underspecified Yes
1517(i) C++11 20.3.1.2.2 [unique.ptr.dltr.dflt] default_delete's default constructor should be trivial Yes
938(i) C++11 20.3.1.2.3 [unique.ptr.dltr.dflt1] default_delete<T[]>::operator() should only accept T* Yes
3159(i) New 20.3.1.3 [unique.ptr.single] §[unique.ptr.single] requirements on deleter may be too strict No 3
2262(i) Open 20.3.1.3 [unique.ptr.single] Requirement for unique_ptr<T>::get_deleter()(p) to be able to destroy the unique_ptr Yes 3
2361(i) C++17 20.3.1.3 [unique.ptr.single] Apply 2299 resolution throughout library Yes
1303(i) C++11 20.3.1.3 [unique.ptr.single] shared_ptr, unique_ptr, and rvalue references v2 Yes
834(i) Resolved 20.3.1.3 [unique.ptr.single] unique_ptr::pointer requirements underspecified Yes
983(i) Resolved 20.3.1.3 [unique.ptr.single] unique_ptr reference deleters should not be moved from Yes
4144(i) WP 20.3.1.3.1 [unique.ptr.single.general] Disallow unique_ptr<T&, D> Yes
3588(i) NAD 20.3.1.3.1 [unique.ptr.single.general] Strike out purposeless UB involving the deleter in members functions of unique_ptr Yes
3632(i) C++23 20.3.1.3.2 [unique.ptr.single.ctor] unique_ptr "Mandates: This constructor is not selected by class template argument deduction" Yes
2944(i) C++20 20.3.1.3.2 [unique.ptr.single.ctor] LWG 2905 accidentally removed requirement that construction of the deleter doesn't throw an exception Yes 0
2801(i) C++17 20.3.1.3.2 [unique.ptr.single.ctor] Default-constructibility of unique_ptr Yes 2
2905(i) C++17 20.3.1.3.2 [unique.ptr.single.ctor] is_constructible_v<unique_ptr<P, D>, P, D const &> should be false when D is not copy constructible Yes
932(i) Resolved 20.3.1.3.2 [unique.ptr.single.ctor] unique_ptr(pointer p) for pointer deleter types Yes
950(i) Resolved 20.3.1.3.2 [unique.ptr.single.ctor] unique_ptr converting ctor shouldn't accept array form Yes
1100(i) Resolved 20.3.1.3.2 [unique.ptr.single.ctor] auto_ptr to unique_ptr conversion Yes
3164(i) NAD 20.3.1.3.2 [unique.ptr.single.ctor] Unhelpful "shall not participate" constraints for unique_ptr with reference deleter Yes
3455(i) C++23 20.3.1.3.4 [unique.ptr.single.asgn] Incorrect Postconditions on unique_ptr move assignment Yes 0
2047(i) C++14 20.3.1.3.4 [unique.ptr.single.asgn] Incorrect "mixed" move-assignment semantics of unique_ptr Yes
2246(i) C++14 20.3.1.3.4 [unique.ptr.single.asgn] unique_ptr assignment effects w.r.t. deleter Yes
1021(i) C++11 20.3.1.3.4 [unique.ptr.single.asgn] Allow nullptr_t assignments to unique_ptr Yes
2228(i) Resolved 20.3.1.3.4 [unique.ptr.single.asgn] Missing SFINAE rule in unique_ptr templated assignment Yes 3
3911(i) New 20.3.1.3.5 [unique.ptr.single.observers] unique_ptr's operator* is missing a mandate Yes 3
4148(i) WP 20.3.1.3.5 [unique.ptr.single.observers] unique_ptr::operator* should not allow dangling references Yes
2762(i) C++23 20.3.1.3.5 [unique.ptr.single.observers] unique_ptr operator*() should be noexcept Yes 3
686(i) NAD 20.3.1.3.5 [unique.ptr.single.observers] unique_ptr and shared_ptr fail to specify non-convertibility to int for unspecified-bool-type Yes
998(i) C++11 20.3.1.3.6 [unique.ptr.single.modifiers] Smart pointer referencing its owner Yes
806(i) CD1 20.3.1.3.6 [unique.ptr.single.modifiers] unique_ptr::reset effects incorrect, too permissive Yes
933(i) NAD 20.3.1.3.6 [unique.ptr.single.modifiers] Unique_ptr defect Yes
2118(i) Resolved 20.3.1.4 [unique.ptr.runtime] [CD] unique_ptr for array does not support cv qualification conversion of actual argument Yes 1
1293(i) Resolved 20.3.1.4 [unique.ptr.runtime] unique_ptr<T[], D> needs to get rid of unspecified-pointer-type Yes
2060(i) NAD Editorial 20.3.1.4 [unique.ptr.runtime] unique_ptr<T[]>(nullptr_t) missing noexcept Yes
2520(i) C++17 20.3.1.4.2 [unique.ptr.runtime.ctor] N4089 broke initializing unique_ptr<T[]> from a nullptr Yes 2
2169(i) C++14 20.3.1.4.5 [unique.ptr.runtime.modifiers] Missing reset() requirements in unique_ptr specialization Yes
821(i) C++11 20.3.1.4.5 [unique.ptr.runtime.modifiers] Minor cleanup : unique_ptr Yes
3426(i) C++23 20.3.1.6 [unique.ptr.special] operator<=>(const unique_ptr<T, D>&, nullptr_t) can't get no satisfaction Yes 0
1297(i) Resolved 20.3.1.6 [unique.ptr.special] unique_ptr's relational operator functions should induce a total order Yes
2376(i) C++17 20.3.2.1 [util.smartptr.weak.bad] bad_weak_ptr::what() overspecified Yes
2594(i) New 20.3.2.2 [util.smartptr.shared] Contradicting definition of empty shared_ptr on shared_ptr(nullptr, d) Yes 3
2996(i) C++20 20.3.2.2 [util.smartptr.shared] Missing rvalue overloads for shared_ptr operations Yes
3018(i) C++20 20.3.2.2 [util.smartptr.shared] shared_ptr of function type Yes 3
2873(i) C++17 20.3.2.2 [util.smartptr.shared] Add noexcept to several shared_ptr related functions Yes
2365(i) C++17 20.3.2.2 [util.smartptr.shared] Missing noexcept in shared_ptr::shared_ptr(nullptr_t) Yes
2411(i) C++17 20.3.2.2 [util.smartptr.shared] shared_ptr is only contextually convertible to bool Yes 0
758(i) C++11 20.3.2.2 [util.smartptr.shared] shared_ptr and nullptr Yes
896(i) C++11 20.3.2.2 [util.smartptr.shared] Library thread safety issue Yes
541(i) CD1 20.3.2.2 [util.smartptr.shared] shared_ptr template assignment and void Yes
674(i) CD1 20.3.2.2 [util.smartptr.shared] shared_ptr interface changes for consistency with N1856 Yes
710(i) CD1 20.3.2.2 [util.smartptr.shared] Missing postconditions Yes
813(i) CD1 20.3.2.2 [util.smartptr.shared] "empty" undefined for shared_ptr Yes
2810(i) Resolved 20.3.2.2 [util.smartptr.shared] use_count and unique in shared_ptr Yes
2864(i) Resolved 20.3.2.2 [util.smartptr.shared] Merge shared_ptr changes from Library Fundamentals to C++17 Yes
1406(i) NAD 20.3.2.2 [util.smartptr.shared] Support hashing smart-pointers based on owner Yes
1031(i) NAD 20.3.2.2 [util.smartptr.shared] Need shared_ptr conversion to a unique_ptr Yes
4110(i) New 20.3.2.2.2 [util.smartptr.shared.const] shared_ptr(nullptr_t, Deleter) is overconstrained, breaking some sensible deleters Yes
4032(i) New 20.3.2.2.2 [util.smartptr.shared.const] Possibly invalid types in the constraints of constructors of std::shared_ptr Yes 4
2906(i) New 20.3.2.2.2 [util.smartptr.shared.const] There is no ability to supply an allocator for the control block when constructing a shared_ptr from a unique_ptr No 3
3548(i) C++23 20.3.2.2.2 [util.smartptr.shared.const] shared_ptr construction from unique_ptr should move (not copy) the deleter Yes
3233(i) C++20 20.3.2.2.2 [util.smartptr.shared.const] Broken requirements for shared_ptr converting constructors Yes 0
2802(i) C++17 20.3.2.2.2 [util.smartptr.shared.const] shared_ptr constructor requirements for a deleter Yes 2
2874(i) C++17 20.3.2.2.2 [util.smartptr.shared.const] Constructor shared_ptr::shared_ptr(Y*) should be constrained Yes
2875(i) C++17 20.3.2.2.2 [util.smartptr.shared.const] shared_ptr::shared_ptr(Y*, D, […]) constructors should be constrained Yes
2876(i) C++17 20.3.2.2.2 [util.smartptr.shared.const] shared_ptr::shared_ptr(const weak_ptr<Y>&) constructor should be constrained Yes
2399(i) C++17 20.3.2.2.2 [util.smartptr.shared.const] shared_ptr's constructor from unique_ptr should be constrained Yes 0
2415(i) C++17 20.3.2.2.2 [util.smartptr.shared.const] Inconsistency between unique_ptr and shared_ptr Yes 2
2495(i) C++17 20.3.2.2.2 [util.smartptr.shared.const] There is no such thing as an Exception Safety element Yes 0
2685(i) C++17 20.3.2.2.2 [util.smartptr.shared.const] shared_ptr deleters must not not throw on move construction Yes 0
881(i) C++11 20.3.2.2.2 [util.smartptr.shared.const] shared_ptr conversion issue Yes
925(i) C++11 20.3.2.2.2 [util.smartptr.shared.const] shared_ptr's explicit conversion from unique_ptr Yes
687(i) CD1 20.3.2.2.2 [util.smartptr.shared.const] shared_ptr conversion constructor not constrained Yes
827(i) Resolved 20.3.2.2.2 [util.smartptr.shared.const] constexpr shared_ptr::shared_ptr()? Yes
1407(i) Resolved 20.3.2.2.2 [util.smartptr.shared.const] Synch shared_ptr constructors taking movable types Yes
2751(i) New 20.3.2.2.3 [util.smartptr.shared.dest] shared_ptr deleter not specified to observe expired weak_ptr instances No 4
899(i) C++11 20.3.2.2.3 [util.smartptr.shared.dest] Adjusting shared_ptr for nullptr_t Yes
575(i) CD1 20.3.2.2.3 [util.smartptr.shared.dest] the specification of ~shared_ptr is MT-unfriendly, makes implementation assumptions Yes
2907(i) NAD 20.3.2.2.3 [util.smartptr.shared.dest] Semantics for destroying the deleter and the control-block of a shared_ptr are unclear Yes
884(i) Resolved 20.3.2.2.5 [util.smartptr.shared.mod] shared_ptr swap Yes
2434(i) C++17 20.3.2.2.6 [util.smartptr.shared.obs] shared_ptr::use_count() is efficient Yes 0
2572(i) C++17 20.3.2.2.6 [util.smartptr.shared.obs] The remarks for shared_ptr::operator* should apply to cv-qualified void as well Yes 0
711(i) C++11 20.3.2.2.6 [util.smartptr.shared.obs] Contradiction in empty shared_ptr Yes
540(i) CD1 20.3.2.2.6 [util.smartptr.shared.obs] shared_ptr<void>::operator*() Yes
542(i) CD1 20.3.2.2.6 [util.smartptr.shared.obs] shared_ptr observers Yes
2776(i) Resolved 20.3.2.2.6 [util.smartptr.shared.obs] shared_ptr unique() and use_count() Yes 2
2337(i) NAD 20.3.2.2.6 [util.smartptr.shared.obs] shared_ptr operator*() should not be noexcept Yes 2
3210(i) New 20.3.2.2.7 [util.smartptr.shared.create] allocate_shared is inconsistent about removing const from the pointer passed to allocator construct and destroy Yes 3
3216(i) WP 20.3.2.2.7 [util.smartptr.shared.create] Rebinding the allocator before calling construct/destroy in allocate_shared Yes 3
4024(i) WP 20.3.2.2.7 [util.smartptr.shared.create] Underspecified destruction of objects created in std::make_shared_for_overwrite/std::allocate_shared_for_overwrite Yes 2
3005(i) C++20 20.3.2.2.7 [util.smartptr.shared.create] Destruction order of arrays by make_shared/allocate_shared only recommended? Yes 0
3007(i) C++20 20.3.2.2.7 [util.smartptr.shared.create] allocate_shared should rebind allocator to cv-unqualified value_type for construction Yes 0
3008(i) C++20 20.3.2.2.7 [util.smartptr.shared.create] make_shared (sub)object destruction semantics are not specified Yes 2
2696(i) C++17 20.3.2.2.7 [util.smartptr.shared.create] Interaction between make_shared and enable_shared_from_this is underspecified Yes 2
2070(i) Resolved 20.3.2.2.7 [util.smartptr.shared.create] allocate_shared should use allocator_traits<A>::construct Yes 2
3427(i) C++23 20.3.2.2.8 [util.smartptr.shared.cmp] operator<=>(const shared_ptr<T>&, nullptr_t) definition ill-formed Yes 0
2908(i) C++17 20.3.2.2.8 [util.smartptr.shared.cmp] The less-than operator for shared pointers could do more Yes
1262(i) C++11 20.3.2.2.8 [util.smartptr.shared.cmp] std::less<std::shared_ptr<T>> is underspecified Yes
743(i) CD1 20.3.2.2.9 [util.smartptr.shared.spec] rvalue swap for shared_ptr Yes
2964(i) C++20 20.3.2.2.10 [util.smartptr.shared.cast] Apparently redundant requirement for dynamic_pointer_cast Yes 0
2877(i) Resolved 20.3.2.2.10 [util.smartptr.shared.cast] Strengthen meaning of "empty shared_ptr<T>" in dynamic_pointer_cast Yes
2400(i) C++17 20.3.2.2.11 [util.smartptr.getdeleter] shared_ptr's get_deleter() should use addressof() Yes 0
533(i) CD1 20.3.2.2.11 [util.smartptr.getdeleter] typo in 2.2.3.10/1 Yes
545(i) CD1 20.3.2.2.11 [util.smartptr.getdeleter] When is a deleter deleted? Yes
741(i) NAD 20.3.2.2.11 [util.smartptr.getdeleter] Const-incorrect get_deleter function for shared_ptr Yes
3001(i) C++20 20.3.2.3 [util.smartptr.weak] weak_ptr::element_type needs remove_extent_t Yes 0
2083(i) C++14 20.3.2.3 [util.smartptr.weak] const-qualification on weak_ptr::owner_before Yes
2315(i) C++14 20.3.2.3 [util.smartptr.weak] weak_ptr should be movable Yes 2
1256(i) C++11 20.3.2.3 [util.smartptr.weak] weak_ptr comparison functions should be removed Yes
3195(i) C++23 20.3.2.3.2 [util.smartptr.weak.const] What is the stored pointer value of an empty weak_ptr? Yes 2
2942(i) C++20 20.3.2.3.6 [util.smartptr.weak.obs] LWG 2873's resolution missed weak_ptr::owner_before Yes
2316(i) C++14 20.3.2.3.6 [util.smartptr.weak.obs] weak_ptr::lock() should be atomic Yes 0
1231(i) C++11 20.3.2.3.6 [util.smartptr.weak.obs] weak_ptr comparisons incompletely resolved Yes
949(i) C++11 20.3.2.4 [util.smartptr.ownerless] owner_less Yes
2529(i) Resolved 20.3.2.7 [util.smartptr.enab] Assigning to enable_shared_from_this::__weak_this twice Yes 3
2179(i) Resolved 20.3.2.7 [util.smartptr.enab] enable_shared_from_this and construction from raw pointers Yes 3
3734(i) C++23 20.3.4.1 [out.ptr.t] Inconsistency in inout_ptr and out_ptr for empty case Yes 2
3897(i) WP 20.3.4.3 [inout.ptr.t] inout_ptr will not update raw pointer to 0 Yes 2
3594(i) C++23 20.3.4.3 [inout.ptr.t] inout_ptr — inconsistent release() in destructor Yes 1
3471(i) C++23 20.4 [mem.res] polymorphic_allocator::allocate does not satisfy Cpp17Allocator requirements Yes 3
2700(i) NAD 20.4 [mem.res] resource_adaptor went missing Yes 1
3681(i) New 20.4.1 [mem.res.syn] Further considerations on LWG 3679 No 4
3637(i) New 20.4.2 [mem.res.class] pmr::memory_resource::do_allocate needs clarification No 3
2724(i) C++17 20.4.2 [mem.res.class] The protected virtual member functions of memory_resource should be private Yes 4
2843(i) C++20 20.4.2.3 [mem.res.private] Unclear behavior of std::pmr::memory_resource::do_allocate() Yes 3
2701(i) NAD Editorial 20.4.2.3 [mem.res.private] Unclear requirement in [memory.resource.private] Yes 3
3036(i) C++23 20.4.3 [mem.poly.allocator.class] polymorphic_allocator::destroy is extraneous Yes 3
3683(i) C++23 20.4.3 [mem.poly.allocator.class] operator== for polymorphic_allocator cannot deduce template argument in common cases Yes
3037(i) C++20 20.4.3 [mem.poly.allocator.class] polymorphic_allocator and incomplete types Yes 2
3304(i) C++20 20.4.3 [mem.poly.allocator.class] Allocate functions of std::polymorphic_allocator should require [[nodiscard]] Yes 3
3312(i) Dup 20.4.3 [mem.poly.allocator.class] polymorphic_allocator::allocate_object and new_object should be [[nodiscard]] Yes
2969(i) C++20 20.4.3.3 [mem.poly.allocator.mem] polymorphic_allocator::construct() shouldn't pass resource() Yes 2
2975(i) C++20 20.4.3.3 [mem.poly.allocator.mem] Missing case for pair construction in scoped and polymorphic allocators Yes 3
3038(i) C++20 20.4.3.3 [mem.poly.allocator.mem] polymorphic_allocator::allocate should not allow integer overflow to create vulnerabilities Yes 2
3237(i) C++20 20.4.3.3 [mem.poly.allocator.mem] LWG 3038 and 3190 have inconsistent PRs Yes 2
3310(i) C++20 20.4.3.3 [mem.poly.allocator.mem] Replace SIZE_MAX with numeric_limits<size_t>::max() Yes 0
3113(i) Resolved 20.4.3.3 [mem.poly.allocator.mem] polymorphic_allocator::construct() should more closely match scoped_allocator_adaptor::construct() Yes 3
3634(i) New 20.4.4 [mem.res.global] When are static-duration memory_resource objects destroyed? No 3
2961(i) C++20 20.4.4 [mem.res.global] Bad postcondition for set_default_resource Yes
2848(i) New 20.4.5.2 [mem.res.pool.options] Pass-through threshold for pool allocator No 3
3143(i) C++23 20.4.6 [mem.res.monotonic.buffer] monotonic_buffer_resource growth policy is unclear Yes 2
3120(i) C++23 20.4.6.3 [mem.res.monotonic.buffer.mem] Unclear behavior of monotonic_buffer_resource::release() Yes 2
3000(i) C++20 20.4.6.3 [mem.res.monotonic.buffer.mem] monotonic_memory_resource::do_is_equal uses dynamic_cast unnecessarily Yes 0
1316(i) C++11 20.5 [allocator.adaptor] scoped_allocator_adaptor operator== has no definition Yes
1405(i) Resolved 20.5 [allocator.adaptor] Move scoped_allocator_adaptor into separate header Yes
2476(i) C++17 20.5.1 [allocator.adaptor.syn] scoped_allocator_adaptor is not assignable Yes 0
2782(i) C++17 20.5.3 [allocator.adaptor.cnstr] scoped_allocator_adaptor constructors must be constrained Yes 0
3116(i) C++20 20.5.4 [allocator.adaptor.members] OUTERMOST_ALLOC_TRAITS needs remove_reference_t Yes 0
2586(i) C++17 20.5.4 [allocator.adaptor.members] Wrong value category used in scoped_allocator_adaptor::construct() Yes 0
2203(i) C++14 20.5.4 [allocator.adaptor.members] scoped_allocator_adaptor uses wrong argument types for piecewise construction Yes
2511(i) Resolved 20.5.4 [allocator.adaptor.members] scoped_allocator_adaptor piecewise construction does not require CopyConstructible Yes 3
1321(i) Resolved 20.5.4 [allocator.adaptor.members] scoped_allocator_adaptor construct and destroy don't use allocator_traits Yes
2717(i) NAD 20.5.4 [allocator.adaptor.members] scoped_allocator_adaptor uses forward to do move's job Yes

Section 21 (109 issues)

(view only non-Ready open issues)

Issue Status Section Title Proposed Resolution Priority Duplicates
2290(i) Open 21 [meta] Top-level "SFINAE"-based constraints should get a separate definition in Clause 17 Yes 3
2452(i) Core 21 [meta] is_constructible, etc. and default arguments No 3
2582(i) C++17 21 [meta] §[res.on.functions]/2's prohibition against incomplete types shouldn't apply to type traits Yes 0
1114(i) C++11 21 [meta] Type traits underspecified Yes
2040(i) Resolved 21 [meta] Missing type traits related to is_convertible Yes
719(i) Resolved 21 [meta] std::is_literal type traits should be provided Yes 750
1390(i) Resolved 21 [meta] Limit speculative compilation for constructible/convertible traits Yes
1391(i) Resolved 21 [meta] constructible/convertible traits and access control Yes
590(i) NAD Editorial 21 [meta] Type traits implementation latitude should be removed for C++0x Yes
3930(i) NAD 21 [meta] Simplify type trait wording Yes
1120(i) NAD 21 [meta] New type trait - remove_all Yes
1018(i) NAD Concepts 21 [meta] Trait specifications should be expressed in terms of concepts Yes
2314(i) C++14 21.2.1 [intseq.general] apply() should return decltype(auto) and use decay_t before tuple_size Yes 0
2345(i) NAD 21.2.2 [intseq.intseq] integer_sequence should have a self-typedef ::type Yes 2
2845(i) New 21.3.2 [meta.rqmts] enable_if, result_of, common_type and aligned_storage do not meet the definition of TransformationTrait No 3
2514(i) C++17 21.3.2 [meta.rqmts] Type traits must not be final Yes 3
2939(i) Open 21.3.3 [meta.type.synop] Some type-completeness constraints of traits are overspecified Yes 2
3099(i) Open 21.3.3 [meta.type.synop] is_assignable<Incomplete&, Incomplete&> Yes 2
2922(i) LEWG 21.3.3 [meta.type.synop] The *_constant<> templates do not make use of template<auto> No
2581(i) C++17 21.3.3 [meta.type.synop] Specialization of <type_traits> variable templates should be prohibited Yes 0
2928(i) Resolved 21.3.3 [meta.type.synop] is_callable is not a good name Yes
2797(i) Resolved 21.3.3 [meta.type.synop] Trait precondition violations Yes 2
2927(i) Resolved 21.3.3 [meta.type.synop] Encoding a functor and argument types as a function signature for is_callable and result_of is fragile Yes
2871(i) NAD 21.3.3 [meta.type.synop] User specializations of type traits should be ill-formed Yes
2910(i) Dup 21.3.3 [meta.type.synop] Template deduction and integral_constant Yes
2346(i) C++14 21.3.4 [meta.help] integral_constant's member functions should be marked noexcept Yes 0
1019(i) C++11 21.3.4 [meta.help] Make integral_constant objects useable in integral-constant-expressions Yes
1202(i) NAD 21.3.4 [meta.help] integral_constant needs a spring clean Yes
1092(i) NAD Concepts 21.3.4 [meta.help] Class template integral_constant should be a constrained template Yes
2015(i) C++14 21.3.5 [meta.unary] Incorrect pre-conditions for some type traits Yes
525(i) Resolved 21.3.5 [meta.unary] type traits definitions not clear Yes
1392(i) Resolved 21.3.5 [meta.unary] result_of should support pointer-to-data-member Yes
2247(i) C++14 21.3.5.2 [meta.unary.cat] Type traits and std::nullptr_t Yes
3967(i) New 21.3.5.4 [meta.unary.prop] The specification for std::is_nothrow_* traits may be ambiguous in some cases involving noexcept(false) No
3929(i) New 21.3.5.4 [meta.unary.prop] Preconditions for type traits should be Mandates Yes 3
2827(i) New 21.3.5.4 [meta.unary.prop] is_trivially_constructible and non-trivial destructors No 3
3697(i) New 21.3.5.4 [meta.unary.prop] Preconditions of reference_constructs_from_temporary/reference_converts_from_temporary seem wrong Yes 3
2496(i) New 21.3.5.4 [meta.unary.prop] Certain hard-to-avoid errors not in the immediate context are not allowed to be triggered by the evaluation of type traits No 3
2116(i) Open 21.3.5.4 [meta.unary.prop] is_nothrow_constructible and destructors No 3
2358(i) Open 21.3.5.4 [meta.unary.prop] Apparently-bogus definition of is_empty type trait Yes 3
2077(i) Open 21.3.5.4 [meta.unary.prop] Further incomplete constraints for type traits No 3
3486(i) LEWG 21.3.5.4 [meta.unary.prop] is_constructible<T[], T...> may be misleading in C++20 No
4113(i) WP 21.3.5.4 [meta.unary.prop] Disallow has_unique_object_representations<Incomplete[]> Yes
3819(i) C++23 21.3.5.4 [meta.unary.prop] reference_meows_from_temporary should not use is_meowible Yes
3823(i) C++23 21.3.5.4 [meta.unary.prop] Unnecessary precondition for is_aggregate Yes
2972(i) C++20 21.3.5.4 [meta.unary.prop] What is is_trivially_destructible_v<int>? Yes
3354(i) C++20 21.3.5.4 [meta.unary.prop] has_strong_structural_equality has a meaningless definition Yes 1
2911(i) C++17 21.3.5.4 [meta.unary.prop] An is_aggregate type trait is needed Yes
2336(i) C++17 21.3.5.4 [meta.unary.prop] is_trivially_constructible/is_trivially_assignable traits are always false Yes 3
2367(i) C++17 21.3.5.4 [meta.unary.prop] pair and tuple are not correctly implemented for is_constructible with no args Yes 3
2560(i) C++17 21.3.5.4 [meta.unary.prop] is_constructible underspecified when applied to a function type Yes 0
2738(i) C++17 21.3.5.4 [meta.unary.prop] is_constructible with void types Yes
2049(i) C++14 21.3.5.4 [meta.unary.prop] is_destructible is underspecified Yes
2196(i) C++14 21.3.5.4 [meta.unary.prop] Specification of is_*[copy/move]_[constructible/assignable] unclear for non-referencable types Yes
2197(i) C++14 21.3.5.4 [meta.unary.prop] Specification of is_[un]signed unclear for non-arithmetic types Yes
2298(i) C++14 21.3.5.4 [meta.unary.prop] [CD] is_nothrow_constructible is always false because of create<> Yes
931(i) C++11 21.3.5.4 [meta.unary.prop] type trait extent<T, I> Yes
1131(i) C++11 21.3.5.4 [meta.unary.prop] C++0x does not need alignment_of Yes
749(i) CD1 21.3.5.4 [meta.unary.prop] Currently has_nothrow_copy_constructor<T>::value is true if T has 'a' nothrow copy constructor. Yes
1174(i) Resolved 21.3.5.4 [meta.unary.prop] Type property predicates Yes
1260(i) Resolved 21.3.5.4 [meta.unary.prop] is_constructible<int*,void*> reports true Yes
1393(i) Resolved 21.3.5.4 [meta.unary.prop] Trivial traits imply noexcept Yes
1394(i) Resolved 21.3.5.4 [meta.unary.prop] is_constructible reports false positives Yes
2828(i) NAD Editorial 21.3.5.4 [meta.unary.prop] Clarify <cstdalign> (following adoption of P0063r3) Yes
1239(i) NAD Editorial 21.3.5.4 [meta.unary.prop] Defect report Yes
747(i) NAD 21.3.5.4 [meta.unary.prop] We have 3 separate type traits to identify classes supporting no-throw operations Yes
748(i) NAD 21.3.5.4 [meta.unary.prop] The is_abstract type trait is defined by reference to 10.4. Yes
1228(i) NAD 21.3.5.4 [meta.unary.prop] User-specialized nothrow type traits Yes
2317(i) C++14 21.3.6 [meta.unary.prop.query] The type property queries should be UnaryTypeTraits returning size_t Yes 0
3400(i) New 21.3.7 [meta.rel] Does is_nothrow_convertible consider destruction of the destination type? No 3
4028(i) New 21.3.7 [meta.rel] std::is_(nothrow_)convertible should be reworded to avoid dependence on the return statement Yes
3174(i) New 21.3.7 [meta.rel] Precondition on is_convertible is too strong Yes 3
975(i) C++11 21.3.7 [meta.rel] is_convertible cannot be instantiated for non-convertible types Yes
2895(i) Resolved 21.3.7 [meta.rel] Passing function types to result_of and is_callable Yes
3022(i) Resolved 21.3.7 [meta.rel] is_convertible<derived*, base*> may lead to ODR Yes 2
1395(i) NAD Editorial 21.3.7 [meta.rel] Inconsistent reference links should be unified Yes
750(i) Dup 21.3.7 [meta.rel] The current definition for is_convertible requires that the type be implicitly convertible, so explicit constructors are ignored. Yes 719
2101(i) C++17 21.3.8 [meta.trans] Some transformation types can produce impossible types Yes 3
3205(i) New 21.3.8.7 [meta.trans.other] decay_t in the new common_type fallback should be remove_cvref_t Yes 3
3152(i) C++23 21.3.8.7 [meta.trans.other] common_type and common_reference have flaws in common Yes 3
2979(i) C++20 21.3.8.7 [meta.trans.other] aligned_union should require complete object types Yes 0
3034(i) C++20 21.3.8.7 [meta.trans.other] P0767R1 breaks previously-standard-layout types Yes 0
3140(i) C++20 21.3.8.7 [meta.trans.other] COMMON_REF is unimplementable as specified Yes 0
3380(i) C++20 21.3.8.7 [meta.trans.other] common_type and comparison categories Yes 0
2396(i) C++17 21.3.8.7 [meta.trans.other] underlying_type doesn't say what to do for an incomplete enumeration type Yes 0
2408(i) C++17 21.3.8.7 [meta.trans.other] SFINAE-friendly common_type/iterator_traits is missing in C++14 Yes
2460(i) C++17 21.3.8.7 [meta.trans.other] LWG issue 2408 and value categories Yes 2
2141(i) C++14 21.3.8.7 [meta.trans.other] common_type trait produces reference types Yes
1187(i) C++11 21.3.8.7 [meta.trans.other] std::decay Yes
705(i) CD1 21.3.8.7 [meta.trans.other] type-trait decay incompletely specified Yes
856(i) CD1 21.3.8.7 [meta.trans.other] Removal of aligned_union Yes
2465(i) Resolved 21.3.8.7 [meta.trans.other] SFINAE-friendly common_type is nearly impossible to specialize correctly and regresses key functionality Yes 2
2763(i) Resolved 21.3.8.7 [meta.trans.other] common_type_t<void, void> is undefined Yes 2
1055(i) Resolved 21.3.8.7 [meta.trans.other] Provide a trait that returns the underlying type of an enumeration type Yes
2397(i) Resolved 21.3.8.7 [meta.trans.other] map<K, V>::emplace and explicit V constructors Yes 1
849(i) NAD 21.3.8.7 [meta.trans.other] missing type traits to compute root class and derived class of types in a class hierachy Yes
1020(i) NAD 21.3.8.7 [meta.trans.other] Restore aligned_union Yes
2569(i) C++17 21.3.9 [meta.logical] conjunction and disjunction requirements are too strict Yes 2
2587(i) C++17 21.3.9 [meta.logical] "Convertible to bool" requirement in conjunction and disjunction Yes 3
2557(i) C++17 21.3.9 [meta.logical] Logical operator traits are broken in the zero-argument case Yes 0
2567(i) C++17 21.3.9 [meta.logical] Specification of logical operator traits uses BaseCharacteristic, which is defined only for UnaryTypeTraits and BinaryTypeTraits Yes 2
4138(i) New 21.3.11 [meta.const.eval] is_within_lifetime should mandate is_object Yes
921(i) C++11 21.4.3 [ratio.ratio] Rational Arithmetic should use template aliases Yes
1388(i) C++11 21.4.3 [ratio.ratio] LWG 1281 incorrectly accepted Yes
1122(i) Resolved 21.4.3 [ratio.ratio] Ratio values should be constexpr Yes
1281(i) Resolved 21.4.3 [ratio.ratio] CopyConstruction and Assignment between ratios having the same normalized form Yes
948(i) C++11 21.4.4 [ratio.arithmetic] ratio arithmetic tweak Yes
1389(i) Resolved 21.4.4 [ratio.arithmetic] Compile-time rational arithmetic and overflow Yes
1121(i) NAD 21.4.4 [ratio.arithmetic] Support for multiple arguments Yes

Section 22 (325 issues)

(view only non-Ready open issues)

Issue Status Section Title Proposed Resolution Priority Duplicates
312(i) CD1 22 [utilities] Table 27 is missing headers Yes
2888(i) Resolved 22 [utilities] Variables of library tag types need to be inline variables Yes
2889(i) Resolved 22 [utilities] Mark constexpr global variables as inline Yes
1075(i) Resolved 22 [utilities] Scoped allocators are too complex Yes
2893(i) NAD 22 [utilities] Parsing Hexadecimally in P0067R4 Yes
2212(i) C++17 22.2 [utility] tuple_size for const pair request <tuple> header Yes 3
1255(i) C++11 22.2 [utility] declval should be added to the library Yes
2955(i) Resolved 22.2 [utility] to_chars / from_chars depend on std::string Yes
2456(i) Resolved 22.2 [utility] Incorrect exception specifications for 'swap' throughout library Yes 1
1377(i) Resolved 22.2 [utility] The revised forward is not compatible with access-control Yes
1289(i) NAD 22.2 [utility] Generic casting requirements for smart pointers Yes
1373(i) NAD 22.2 [utility] Customizable traits should have their own headers Yes
2153(i) LEWG 22.2.2 [utility.swap] Narrowing of the non-member swap contract No 2
2554(i) Resolved 22.2.2 [utility.swap] Swapping multidimensional arrays is never noexcept Yes 2
2800(i) Resolved 22.2.2 [utility.swap] constexpr swap Yes 3
4056(i) NAD 22.2.2 [utility.swap] The effects of std::swap are under-specified Yes
2297(i) NAD 22.2.3 [utility.exchange] [CD] Missing type requirements for std::exchange Yes
2388(i) NAD 22.2.3 [utility.exchange] Handling self-assignment in the proposed library function std::exchange Yes 2
3757(i) C++23 22.2.4 [forward] What's the effect of std::forward_like<void>(x)? Yes
939(i) C++11 22.2.4 [forward] Problem with std::identity and reference-to-temporaries Yes
808(i) CD1 22.2.4 [forward] §[forward] incorrect redundant specification Yes
700(i) CD1 22.2.4 [forward] N1856 defines struct identity Yes
823(i) Resolved 22.2.4 [forward] identity<void> seems broken Yes
1054(i) Resolved 22.2.4 [forward] forward broken Yes
3902(i) New 22.2.6 [declval] Return type of std::declval<cv void> should be (cv-unqualified) void Yes 4
2599(i) New 22.2.6 [declval] Library incomplete type permission phrase is unclear No 3
296(i) C++11 22.3 [pairs] Missing descriptions and requirements of pair operators Yes
811(i) C++11 22.3 [pairs] pair of pointers no longer works with literal 0 Yes
885(i) C++11 22.3 [pairs] pair assignment Yes
265(i) CD1 22.3 [pairs] std::pair::pair() effects overly restrictive Yes
706(i) CD1 22.3 [pairs] make_pair() should behave as make_tuple() wrt. reference_wrapper() Yes
181(i) TC1 22.3 [pairs] make_pair() unintended behavior Yes
353(i) Resolved 22.3 [pairs] std::pair missing template assignment Yes
482(i) Resolved 22.3 [pairs] Swapping pairs Yes
1378(i) Resolved 22.3 [pairs] pair and tuple have too many conversions Yes
1380(i) Resolved 22.3 [pairs] pair and tuple of references need to better specify move-semantics Yes
1382(i) Resolved 22.3 [pairs] pair and tuple constructors should forward arguments Yes
1383(i) Resolved 22.3 [pairs] Inconsistent defaulted move/copy members in pair and tuple Yes
840(i) NAD 22.3 [pairs] pair default template argument Yes
916(i) NAD 22.3 [pairs] Redundant move-assignment operator of pair should be removed Yes
348(i) Dup 22.3 [pairs] Minor issue with std::pair operator< Yes 532
1167(i) NAD Concepts 22.3 [pairs] pair<T,U> doesn't model LessThanComparable in unconstrained code even if T and U do. Yes
3342(i) New 22.3.2 [pairs.pair] Library wording uses "initializes x with y", which is underspecified No 3
2289(i) Open 22.3.2 [pairs.pair] constexpr guarantees of defaulted functions still insufficient No 3
2958(i) C++20 22.3.2 [pairs.pair] Moves improperly defined as deleted Yes 2
3346(i) C++20 22.3.2 [pairs.pair] pair and tuple copy and move constructor have backwards specification Yes 0
3382(i) C++20 22.3.2 [pairs.pair] NTTP for pair and array Yes 2
2729(i) C++17 22.3.2 [pairs.pair] Missing SFINAE on std::pair::operator= Yes 2
1324(i) Resolved 22.3.2 [pairs.pair] Still too many implicit conversions for pair and tuple Yes
1326(i) Resolved 22.3.2 [pairs.pair] Missing/wrong preconditions for pair and tuple functions Yes
1379(i) Resolved 22.3.2 [pairs.pair] pair copy-assignment not consistent for references Yes
2068(i) NAD 22.3.2 [pairs.pair] std::pair not C++03-compatible with defaulted copy c'tor Yes
2766(i) New 22.3.3 [pairs.spec] Swapping non-swappable types Yes 3
3865(i) C++23 22.3.3 [pairs.spec] Sorting a range of pairs Yes 2
3347(i) C++20 22.3.3 [pairs.spec] std::pair<T, U> now requires T and U to be less-than-comparable Yes 1
3166(i) New 22.3.4 [pair.astuple] No such descriptive element as Value: No 3
2974(i) C++20 22.3.4 [pair.astuple] Diagnose out of bounds tuple_element/variant_alternative Yes
1061(i) NAD Editorial 22.3.4 [pair.astuple] Bad indexing for tuple access to pair (Editorial?) Yes
2899(i) C++20 22.4 [tuple] is_(nothrow_)move_constructible and tuple, optional and unique_ptr Yes 2
522(i) CD1 22.4 [tuple] Tuple doesn't define swap Yes
801(i) Resolved 22.4 [tuple] tuple and pair trivial members Yes
2773(i) C++17 22.4.1 [tuple.general] Making std::ignore constexpr Yes 0
2796(i) C++17 22.4.1 [tuple.general] tuple should be a literal type Yes 2
2446(i) NAD 22.4.1 [tuple.general] Unspecialized std::tuple_size should be defined Yes
3378(i) New 22.4.2 [tuple.syn] tuple_size_v/tuple_element_t should be available when tuple_size/tuple_element are Yes 3
3990(i) WP 22.4.4 [tuple.tuple] Program-defined specializations of std::tuple and std::variant can't be properly supported Yes
1116(i) Resolved 22.4.4 [tuple.tuple] Literal constructors for tuple Yes
2051(i) Resolved 22.4.4 [tuple.tuple] Explicit tuple constructors for more than one parameter Yes 2
1077(i) NAD Editorial 22.4.4 [tuple.tuple] Nonesense tuple declarations Yes
3583(i) New 22.4.4.2 [tuple.cnstr] Clarify if/when short circuiting applies to conditions in Constraints: elements No 3
2528(i) New 22.4.4.2 [tuple.cnstr] Order of std::tuple construction unspecified No 3
4045(i) WP 22.4.4.2 [tuple.cnstr] tuple can create dangling references from tuple-like Yes
3121(i) C++23 22.4.4.2 [tuple.cnstr] tuple constructor constraints for UTypes&&... overloads Yes 2
3211(i) C++23 22.4.4.2 [tuple.cnstr] std::tuple<> should be trivially constructible Yes 3
3158(i) C++20 22.4.4.2 [tuple.cnstr] tuple(allocator_arg_t, const Alloc&) should be conditionally explicit Yes 3
2312(i) C++17 22.4.4.2 [tuple.cnstr] tuple's constructor constraints need to be phrased more precisely Yes 2
2549(i) C++17 22.4.4.2 [tuple.cnstr] Tuple EXPLICIT constructor templates that take tuple parameters end up taking references to temporaries and will create dangling references Yes 2
886(i) C++11 22.4.4.2 [tuple.cnstr] tuple construction Yes
807(i) CD1 22.4.4.2 [tuple.cnstr] tuple construction should not fail unless its element's construction fails Yes
3155(i) Resolved 22.4.4.2 [tuple.cnstr] tuple<any, any>{allocator_arg_t, an_allocator} Yes 3
2419(i) Resolved 22.4.4.2 [tuple.cnstr] Clang's libc++ extension to std::tuple Yes
1117(i) Resolved 22.4.4.2 [tuple.cnstr] tuple copy constructor Yes
3440(i) NAD 22.4.4.2 [tuple.cnstr] Aggregate-paren-init breaks direct-initializing a tuple or optional from {aggregate-member-value} Yes 2
917(i) NAD 22.4.4.2 [tuple.cnstr] Redundant move-assignment operator of tuple should be removed Yes
918(i) NAD Concepts 22.4.4.4 [tuple.swap] Swap for tuple needs to be conceptualized Yes
2275(i) C++14 22.4.5 [tuple.creation] [CD] Why is forward_as_tuple not constexpr? Yes
2301(i) C++14 22.4.5 [tuple.creation] Why is std::tie not constexpr? Yes 2
1384(i) C++11 22.4.5 [tuple.creation] Function pack_arguments is poorly named Yes
1385(i) C++11 22.4.5 [tuple.creation] tuple_cat should be a single variadic signature Yes
1386(i) C++11 22.4.5 [tuple.creation] pack_arguments overly complex Yes
2933(i) Resolved 22.4.5 [tuple.creation] PR for LWG 2773 could be clearer Yes 3
3978(i) Resolved 22.4.5 [tuple.creation] The "no effect" requirement for std::ignore is unimplementable for volatile bit-fields Yes 4
1201(i) Resolved 22.4.5 [tuple.creation] Do we always want to unwrap ref-wrappers in make_tuple Yes
3528(i) C++23 22.4.6 [tuple.apply] make_from_tuple can perform (the equivalent of) a C-style cast Yes 3
4040(i) New 22.4.7 [tuple.helper] Contradictory specification of std::tuple_size No 3
2770(i) C++17 22.4.7 [tuple.helper] tuple_size<const T> specialization is not SFINAE compatible and breaks decomposition declarations Yes 1
2313(i) C++14 22.4.7 [tuple.helper] tuple_size should always derive from integral_constant<size_t, N> Yes 2
1118(i) C++11 22.4.7 [tuple.helper] tuple query APIs do not support cv-qualification Yes
775(i) CD1 22.4.7 [tuple.helper] Tuple indexing should be unsigned? Yes
1119(i) NAD 22.4.7 [tuple.helper] tuple query APIs do not support references Yes
2485(i) C++17 22.4.8 [tuple.elem] get() should be overloaded for const tuple&& Yes 1
1191(i) C++11 22.4.8 [tuple.elem] tuple get API should respect rvalues Yes
3882(i) New 22.4.9 [tuple.rel] tuple relational operators have confused friendships Yes 3
3728(i) New 22.4.9 [tuple.rel] Can't make neither head nor tail of the description of operator<=>(tuple, tuple) Yes 4
2472(i) New 22.4.9 [tuple.rel] Heterogeneous comparisons in the standard library can result in ambiguities No 3
532(i) LEWG 22.4.9 [tuple.rel] Tuple comparison Yes 348
1335(i) C++11 22.4.9 [tuple.rel] Insufficient requirements for tuple::operator<() Yes
928(i) NAD Concepts 22.4.9 [tuple.rel] Wrong concepts used for tuple's comparison operators Yes
2857(i) C++17 22.5 [optional] {variant,optional,any}::emplace should return the constructed value Yes 1
2862(i) Resolved 22.5 [optional] LWG 2756 should be accepted Yes
2990(i) Open 22.5.3 [optional.optional] optional::value_type is not always a value type Yes 3
3196(i) C++20 22.5.3 [optional.optional] std::optional<T> is ill-formed is T is an array Yes 0
2900(i) C++17 22.5.3 [optional.optional] The copy and move constructors of optional are not constexpr Yes
2756(i) C++17 22.5.3 [optional.optional] C++ WP optional<T> should 'forward' T's implicit conversions Yes 1
2825(i) Resolved 22.5.3 [optional.optional] LWG 2756 breaks class template argument deduction for optional Yes 2
3016(i) NAD 22.5.3 [optional.optional] optional and over-aligned types Yes 3
3886(i) WP 22.5.3.1 [optional.optional.general] Monad mo' problems Yes 3
4141(i) WP 22.5.3.1 [optional.optional.general] Improve prohibitions on "additional storage" Yes
3709(i) C++23 22.5.3.1 [optional.optional.general] LWG-3703 was underly ambitious Yes
2811(i) New 22.5.3.2 [optional.ctor] "Selected constructor" wording is incorrect for optional/variant/any Yes 3
2842(i) C++17 22.5.3.2 [optional.ctor] in_place_t check for optional::optional(U&&) should decay U Yes 0
2753(i) Resolved 22.5.3.2 [optional.ctor] Optional's constructors and assignments need constraints Yes 0
2746(i) New 22.5.3.4 [optional.assign] Inconsistency between requirements for emplace between optional and variant Yes 3
2748(i) C++17 22.5.3.5 [optional.swap] swappable traits for optionals Yes 0
3424(i) New 22.5.3.7 [optional.observe] optional::value_or should never return a cv-qualified type Yes 3
2829(i) Open 22.5.3.7 [optional.observe] LWG 2740 leaves behind vacuous words No 2
2740(i) C++17 22.5.3.7 [optional.observe] constexpr optional<T>::operator-> Yes 0
4015(i) Open 22.5.3.8 [optional.monadic] LWG 3973 broke const overloads of std::optional monadic operations Yes 1
3613(i) New 22.5.4 [optional.nullopt] Specify that nullopt_t is copyable Yes 3
2736(i) C++17 22.5.4 [optional.nullopt] nullopt_t insufficiently constrained Yes 2
3562(i) NAD 22.5.4 [optional.nullopt] Superseding nullopt_t's requirement to not be DefaultConstructible Yes
2806(i) C++17 22.5.5 [optional.bad.access] Base class of bad_optional_access Yes 1
4072(i) WP 22.5.8 [optional.comp.with.t] std::optional comparisons: constrain harder Yes 1
3566(i) C++23 22.5.8 [optional.comp.with.t] Constraint recursion for operator<=>(optional<T>, U) Yes
3746(i) C++23 22.5.8 [optional.comp.with.t] optional's spaceship with U with a type derived from optional causes infinite constraint meta-recursion Yes
2945(i) C++20 22.5.8 [optional.comp.with.t] Order of template parameters in optional comparisons Yes 2
2934(i) C++17 22.5.8 [optional.comp.with.t] optional<const T> doesn't compare with T Yes
3627(i) New 22.5.9 [optional.specalg] Inconsistent specifications for std::make_optional overloads Yes 3
2805(i) Resolved 22.6 [variant] void and reference type alternatives in variant, variant<> and index() Yes
2881(i) New 22.6.3 [variant.variant] Adopt section III of P0308R0 No 3
2901(i) C++17 22.6.3 [variant.variant] Variants cannot properly support allocators Yes 0
2902(i) NAD 22.6.3 [variant.variant] variant should only support complete types Yes 0
2971(i) NAD 22.6.3 [variant.variant] variant should require Destructible types Yes
3215(i) New 22.6.3.2 [variant.ctor] variant default constructor has vague constexpr requirements No 2
2991(i) Open 22.6.3.2 [variant.ctor] variant copy constructor missing noexcept(see below) Yes
2833(i) Open 22.6.3.2 [variant.ctor] Library needs to specify what it means when it declares a function constexpr Yes 2
3024(i) C++20 22.6.3.2 [variant.ctor] variant's copies must be deleted instead of disabled via SFINAE Yes
2903(i) C++17 22.6.3.2 [variant.ctor] The form of initialization for the emplace-constructors is not specified Yes
3228(i) Resolved 22.6.3.2 [variant.ctor] Surprising variant construction Yes 2
2882(i) Resolved 22.6.3.2 [variant.ctor] Clarify variant construction Yes
3991(i) New 22.6.3.4 [variant.assign] variant's move assignment should not be guaranteed to produce a valueless by exception state Yes 3
3069(i) New 22.6.3.4 [variant.assign] Move assigning variant's subobject corrupts data Yes 3
3585(i) C++23 22.6.3.4 [variant.assign] Variant converting assignment with immovable alternative Yes
2904(i) C++17 22.6.3.4 [variant.assign] Make variant move-assignment more exception safe Yes
2749(i) C++17 22.6.3.7 [variant.swap] swappable traits for variants Yes 1
2970(i) C++20 22.6.7 [variant.visit] Return type of std::visit misspecified Yes 2
3052(i) Resolved 22.6.7 [variant.visit] visit is underconstrained Yes 2
2809(i) Resolved 22.6.12 [variant.hash] variant hash requirements Yes
2868(i) C++17 22.7.3 [any.bad.any.cast] Missing specification of bad_any_cast::what() Yes
3416(i) New 22.7.4 [any.class] The Throws: specification of std::any does not mention allocation No 3
2789(i) C++17 22.7.4 [any.class] Equivalence of contained objects Yes 0
2744(i) C++17 22.7.4.2 [any.cons] any's in_place constructors Yes 0
2754(i) Resolved 22.7.4.2 [any.cons] The in_place constructors and emplace functions added by P0032R3 don't require CopyConstructible Yes 1
2886(i) NAD 22.7.4.5 [any.observers] Keep the empty() functions in any Yes
3423(i) New 22.7.5 [any.nonmembers] std::any_cast should never return a cv-qualified type Yes 3
3305(i) WP 22.7.5 [any.nonmembers] any_cast<void> Yes 2
2768(i) C++17 22.7.5 [any.nonmembers] any_cast and move semantics Yes 0
2769(i) C++17 22.7.5 [any.nonmembers] Redundant const in the return type of any_cast(const any&) Yes 0
3688(i) New 22.8.4 [expected.bad] Exception specifications of copy/move member functions of std::bad_expected_access No 2
4031(i) WP 22.8.5 [expected.bad.void] bad_expected_access<void> member functions should be noexcept Yes
3891(i) New 22.8.6.1 [expected.object.general] LWG 3870 breaks std::expected<cv T, E> Yes 2
3754(i) C++23 22.8.6.1 [expected.object.general] Class template expected synopsis contains declarations that do not match the detailed description Yes
3836(i) C++23 22.8.6.2 [expected.object.cons] std::expected<bool, E1> conversion constructor expected(const expected<U, G>&) should take precedence over expected(U&&) with operator bool Yes 1
4026(i) New 22.8.6.4 [expected.object.assign] Assignment operators of std::expected should propagate triviality Yes 2
3951(i) WP 22.8.6.5 [expected.object.swap] §[expected.object.swap]: Using value() instead of has_value() Yes
3843(i) C++23 22.8.6.6 [expected.object.obs] std::expected<T,E>::value() & assumes E is copy constructible Yes
3938(i) WP 22.8.6.7 [expected.object.monadic] Cannot use std::expected monadic ops with move-only error_type Yes
3973(i) WP 22.8.6.7 [expected.object.monadic] Monadic operations should be ADL-proof Yes
3866(i) C++23 22.8.6.7 [expected.object.monadic] Bad Mandates for expected::transform_error overloads Yes
3877(i) C++23 22.8.6.7 [expected.object.monadic] Incorrect constraints on const-qualified monadic overloads for std::expected Yes
3703(i) C++23 22.8.7.1 [expected.void.general] Missing requirements for expected<T, E> requires is_void<T> Yes 2
4025(i) WP 22.8.7.4 [expected.void.assign] Move assignment operator of std::expected<cv void, E> should not be conditionally deleted Yes
3687(i) C++23 22.8.7.4 [expected.void.assign] expected<cv void, E> move constructor should move Yes
3940(i) WP 22.8.7.6 [expected.void.obs] std::expected<void, E>::value() also needs E to be copy constructible Yes
2348(i) Open 22.9.2 [template.bitset] charT('1') is not the wide equivalent of '1' Yes 3
853(i) C++11 22.9.2 [template.bitset] to_string needs updating with zero and one Yes
1113(i) C++11 22.9.2 [template.bitset] bitset::to_string could be simplified Yes
1227(i) C++11 22.9.2 [template.bitset] <bitset> synopsis overspecified Yes
1250(i) C++11 22.9.2 [template.bitset] <bitset> still overspecified Yes
693(i) CD1 22.9.2 [template.bitset] std::bitset::all() missing Yes
694(i) CD1 22.9.2 [template.bitset] std::bitset and long long Yes
11(i) TC1 22.9.2 [template.bitset] Bitset minor problems Yes
1112(i) NAD 22.9.2 [template.bitset] bitsets and new style for loop Yes
116(i) Dup 22.9.2 [template.bitset] bitset cannot be constructed with a const char* Yes 778
4140(i) WP 22.9.2.1 [template.bitset.general] Useless default constructors for bit reference types Yes
2250(i) C++17 22.9.2.2 [bitset.cons] Follow-up On Library Issue 2207 Yes 3
1325(i) C++11 22.9.2.2 [bitset.cons] bitset Yes
396(i) CD1 22.9.2.2 [bitset.cons] what are characters zero and one Yes
457(i) CD1 22.9.2.2 [bitset.cons] bitset constructor: incorrect number of initialized bits Yes
778(i) CD1 22.9.2.2 [bitset.cons] std::bitset does not have any constructor taking a string literal Yes 116
907(i) C++11 22.9.2.3 [bitset.members] Bitset's immutable element retrieval is inconsistently defined Yes
186(i) CD1 22.9.2.3 [bitset.members] bitset::set() second parameter should be bool Yes
434(i) CD1 22.9.2.3 [bitset.members] bitset::to_string() hard to use Yes
1168(i) NAD Editorial 22.9.2.3 [bitset.members] Odd wording for bitset equality operators Yes
3199(i) C++20 22.9.4 [bitset.operators] istream >> bitset<0> fails Yes
303(i) CD1 22.9.4 [bitset.operators] Bitset input operator underspecified Yes
3805(i) New 22.10 [function.objects] Expression evaluating to a call wrapper is a prvalue, not an object No 4
2048(i) C++14 22.10 [function.objects] Unnecessary mem_fn overloads Yes
2149(i) C++14 22.10 [function.objects] Concerns about 20.8/5 Yes
185(i) CD1 22.10 [function.objects] Questionable use of term "inline" Yes
660(i) CD1 22.10 [function.objects] Missing Bitwise Operations Yes
1290(i) Resolved 22.10 [function.objects] Don't require [u|bi]nary_function inheritance Yes
658(i) Resolved 22.10 [function.objects] Two unspecified function comparators in [function.objects] Yes
1397(i) Resolved 22.10 [function.objects] Deprecate '98 binders Yes
351(i) NAD Editorial 22.10 [function.objects] unary_negate and binary_negate: struct or class? Yes
1398(i) NAD 22.10 [function.objects] Users should be able to specialize functors without depending on whole <functional> header Yes
3202(i) C++20 22.10.2 [functional.syn] P0318R1 was supposed to be revised Yes 0
4007(i) New 22.10.4 [func.require] Mystic prohibition of calling a volatile-qualified perfect forwarding call wrapper Yes 3
3655(i) C++23 22.10.4 [func.require] The INVOKE operation and union types Yes 3
2219(i) C++17 22.10.4 [func.require] INVOKE-ing a pointer to member with a reference_wrapper as the object expression Yes 2
2387(i) C++17 22.10.4 [func.require] More nested types that must be accessible and unambiguous Yes
2486(i) C++17 22.10.4 [func.require] mem_fn() should be required to use perfect forwarding Yes 0
1294(i) C++11 22.10.4 [func.require] Difference between callable wrapper and forwarding call wrapper unclear Yes
1295(i) C++11 22.10.4 [func.require] Contradictory call wrapper requirements Yes
1520(i) C++11 22.10.4 [func.require] INVOKE on member data pointer with too many arguments Yes
2926(i) Resolved 22.10.4 [func.require] INVOKE(f, t1, t2,... tN) and INVOKE(f, t1, t2,... tN, R) are too similar Yes
2807(i) C++17 22.10.5 [func.invoke] std::invoke should use std::is_nothrow_callable Yes 3
2690(i) Resolved 22.10.5 [func.invoke] invoke<R> Yes
2894(i) Resolved 22.10.5 [func.invoke] The function template std::apply() is required to be constexpr, but std::invoke() isn't Yes 3
3046(i) New 22.10.6 [refwrap] Do not require reference_wrapper to support non-referenceable function types Yes 3
2981(i) C++20 22.10.6 [refwrap] Remove redundant deduction guides from standard library Yes 0
2993(i) C++20 22.10.6 [refwrap] reference_wrapper<T> conversion from T&& Yes 3
987(i) C++11 22.10.6 [refwrap] reference_wrapper and function types Yes
2017(i) C++11 22.10.6 [refwrap] std::reference_wrapper makes incorrect usage of std::result_of Yes
2022(i) C++11 22.10.6 [refwrap] reference_wrapper<T>::result_type is underspecified Yes
521(i) CD1 22.10.6 [refwrap] Garbled requirements for argument_type in reference_wrapper Yes
3041(i) C++20 22.10.6.2 [refwrap.const] Unnecessary decay in reference_wrapper Yes 0
688(i) C++11 22.10.6.2 [refwrap.const] reference_wrapper, cref unsafe, allow binding to rvalues Yes
689(i) CD1 22.10.6.2 [refwrap.const] reference_wrapper constructor overly constrained Yes
3764(i) C++23 22.10.6.5 [refwrap.invoke] reference_wrapper::operator() should propagate noexcept Yes
2435(i) C++17 22.10.6.5 [refwrap.invoke] reference_wrapper::operator()'s Remark should be deleted Yes 4
4071(i) WP 22.10.6.6 [refwrap.comparisons] reference_wrapper comparisons are not SFINAE-friendly Yes
3146(i) C++23 22.10.6.7 [refwrap.helpers] Excessive unwrapping in std::ref/cref Yes 3
2491(i) New 22.10.8 [comparisons] std::less<T*> in constant expression Yes 3
2547(i) New 22.10.8 [comparisons] Container requirements (and other library text) should say "strict total order", not just "total order" No 3
2450(i) C++17 22.10.8 [comparisons] (greater|less|greater_equal|less_equal)<void> do not yield a total order for pointers Yes 2
2562(i) C++17 22.10.8 [comparisons] Consistent total ordering of pointers by comparison functors Yes 3
284(i) CD1 22.10.8 [comparisons] unportable example in 20.3.7, p6 Yes
3530(i) C++23 22.10.8.8 [comparisons.three.way] BUILTIN-PTR-MEOW should not opt the type out of syntactic checks Yes
297(i) CD1 22.10.10 [logical.operations] const_mem_fun_t<>::argument_type should be const T* Yes
3979(i) New 22.10.13 [func.not.fn] Should we reject std::bind_front<42>() and its friends? Yes 4
2767(i) C++17 22.10.13 [func.not.fn] not_fn call_wrapper can form invalid types Yes 0
3184(i) C++20 22.10.14 [func.bind.partial] Inconsistencies in bind_front wording Yes 0
520(i) CD1 22.10.15 [func.bind] Result_of and pointers to data members Yes
2010(i) C++14 22.10.15.2 [func.bind.isbind] is_* traits for binding operations can't be meaningfully specialized Yes
1071(i) C++11 22.10.15.2 [func.bind.isbind] is_bind_expression should derive from integral_constant<bool> Yes
2487(i) C++17 22.10.15.4 [func.bind.bind] bind() should be const-overloaded, not cv-overloaded Yes 2
2545(i) C++17 22.10.15.4 [func.bind.bind] Simplify wording for bind without explicitly specified return type Yes 3
2021(i) C++14 22.10.15.4 [func.bind.bind] Further incorrect usages of result_of Yes
817(i) C++11 22.10.15.4 [func.bind.bind] bind needs to be moved Yes
527(i) CD1 22.10.15.4 [func.bind.bind] tr1::bind has lost its Throws clause Yes
2957(i) Resolved 22.10.15.4 [func.bind.bind] bind's specification doesn't apply the cv-qualification of the call wrapper to the callable object Yes 3
816(i) Resolved 22.10.15.4 [func.bind.bind] Should bind()'s returned functor have a nofail copy ctor when bind() is nofail? Yes
3824(i) C++23 22.10.15.5 [func.bind.place] Number of bind placeholders is underspecified Yes
2488(i) C++17 22.10.15.5 [func.bind.place] Placeholders should be allowed and encouraged to be constexpr Yes 2
2489(i) C++17 22.10.16 [func.memfn] mem_fn() should be noexcept Yes 0
920(i) C++11 22.10.16 [func.memfn] Ref-qualification support in the library Yes 1230
3023(i) Resolved 22.10.16 [func.memfn] Clarify unspecified call wrappers Yes 3
1230(i) Dup 22.10.16 [func.memfn] mem_fn and variadic templates Yes 920
770(i) CD1 22.10.17 [func.wrap] std::function should use rvalue swap Yes
2233(i) C++17 22.10.17.2 [func.wrap.badcall] bad_function_call::what() unhelpful Yes 3
2062(i) C++17 22.10.17.3 [func.wrap.func] Effect contradictions w/o no-throw guarantee of std::function swaps Yes 2
2385(i) C++17 22.10.17.3 [func.wrap.func] function::assign allocator argument doesn't make sense Yes 2
2393(i) C++17 22.10.17.3 [func.wrap.func] std::function's Callable definition is broken Yes 2
2401(i) C++17 22.10.17.3 [func.wrap.func] std::function needs more noexcept Yes 0
2420(i) C++17 22.10.17.3 [func.wrap.func] function<void(ArgTypes...)> does not discard the return value of the target object Yes 1
1070(i) C++11 22.10.17.3 [func.wrap.func] Ambiguous move overloads in function Yes
1240(i) C++11 22.10.17.3 [func.wrap.func] Deleted comparison functions of std::function not needed Yes
1399(i) C++11 22.10.17.3 [func.wrap.func] function does not need an explicit default constructor Yes
769(i) CD1 22.10.17.3 [func.wrap.func] std::function should use nullptr_t instead of "unspecified-null-pointer-type" Yes
2370(i) Resolved 22.10.17.3 [func.wrap.func] Operations involving type-erased allocators should not be noexcept in std::function Yes 3
2501(i) Resolved 22.10.17.3 [func.wrap.func] std::function requires POCMA/POCCA Yes 3
2502(i) Resolved 22.10.17.3 [func.wrap.func] std::function does not use allocator::construct Yes 3
1023(i) NAD Editorial 22.10.17.3 [func.wrap.func] Unclear inheritance relation for std::function Yes
644(i) NAD 22.10.17.3 [func.wrap.func] Possible typos in 'function' description Yes
1024(i) NAD Concepts 22.10.17.3 [func.wrap.func] std::function constructors overly generous Yes
1059(i) NAD Concepts 22.10.17.3 [func.wrap.func] Usage of no longer existing FunctionType concept Yes
3493(i) New 22.10.17.3.2 [func.wrap.func.con] The constructor of std::function taking an F is missing a constraint Yes 3
2774(i) C++23 22.10.17.3.2 [func.wrap.func.con] std::function construction vs assignment Yes 3
3617(i) C++23 22.10.17.3.2 [func.wrap.func.con] function/packaged_task deduction guides and deducing this Yes 2
3238(i) C++20 22.10.17.3.2 [func.wrap.func.con] Insufficiently-defined behavior of std::function deduction guides Yes
2850(i) C++17 22.10.17.3.2 [func.wrap.func.con] std::function move constructor does unnecessary work Yes 0
2565(i) C++17 22.10.17.3.2 [func.wrap.func.con] std::function's move constructor should guarantee nothrow for reference_wrappers and function pointers Yes 0
2781(i) C++17 22.10.17.3.2 [func.wrap.func.con] Contradictory requirements for std::function and std::reference_wrapper Yes 0
2132(i) C++14 22.10.17.3.2 [func.wrap.func.con] std::function ambiguity Yes 2
1287(i) C++11 22.10.17.3.2 [func.wrap.func.con] std::function requires CopyConstructible target object Yes
1288(i) C++11 22.10.17.3.2 [func.wrap.func.con] std::function assignment from rvalues Yes
1292(i) C++11 22.10.17.3.2 [func.wrap.func.con] std::function should support all callable types Yes
1400(i) C++11 22.10.17.3.2 [func.wrap.func.con] FCD function does not need an explicit default constructor Yes
610(i) CD1 22.10.17.3.2 [func.wrap.func.con] Suggested non-normative note for C++0x Yes
2813(i) Resolved 22.10.17.3.2 [func.wrap.func.con] std::function should not return dangling references Yes 2
2386(i) NAD 22.10.17.3.2 [func.wrap.func.con] function::operator= handles allocators incorrectly Yes 1
1258(i) Resolved 22.10.17.3.3 [func.wrap.func.mod] std::function Effects clause impossible to satisfy Yes
1333(i) C++11 22.10.17.3.5 [func.wrap.func.inv] Missing forwarding during std::function invocation Yes
815(i) Resolved 22.10.17.3.5 [func.wrap.func.inv] std::function and reference_closure do not use perfect forwarding Yes
2591(i) C++17 22.10.17.3.6 [func.wrap.func.targ] std::function's member template target() should not lead to undefined behaviour Yes 3
633(i) NAD Editorial 22.10.17.3.6 [func.wrap.func.targ] Return clause mentions undefined "type()" Yes
3680(i) New 22.10.17.4.3 [func.wrap.move.ctor] Constructor of move_only_function with empty ref-qualifier is over-constrained Yes 2
3642(i) New 22.10.17.4.3 [func.wrap.move.ctor] move_only_function assignment operators seem to be defined suboptimal Yes 3
4127(i) New 22.10.18.3 [func.search.bm] The Standard Library should not use predicates of the form pred(*i) != false Yes 3
3512(i) New 22.10.19 [unord.hash] Incorrect exception safety guarantee for unordered containers No 3
1025(i) NAD Future 22.10.19 [unord.hash] The library should provide more specializations for std::hash Yes
2119(i) C++17 22.10.19 [unord.hash] Missing hash specializations for extended integer types Yes 3
2148(i) C++14 22.10.19 [unord.hash] Hashing enums should be supported directly by std::hash Yes
978(i) C++11 22.10.19 [unord.hash] Hashing smart pointers Yes
1182(i) C++11 22.10.19 [unord.hash] Unfortunate hash dependencies Yes
1245(i) C++11 22.10.19 [unord.hash] std::hash<string> & co Yes
848(i) CD1 22.10.19 [unord.hash] Missing std::hash specializations for std::bitset/std::vector<bool> Yes
2803(i) Resolved 22.10.19 [unord.hash] hash for arithmetic, pointer and standard library types should not throw Yes 3
2817(i) Resolved 22.10.19 [unord.hash] std::hash for nullptr_t Yes
2543(i) Resolved 22.10.19 [unord.hash] LWG 2148 (hash support for enum types) seems under-specified Yes 2
1317(i) NAD 22.10.19 [unord.hash] make_hash Yes
1072(i) NAD Concepts 22.10.19 [unord.hash] Is std::hash a constrained template or not? Yes
3656(i) C++23 22.11.5 [bit.pow.two] Inconsistent bit operations returning a count Yes 3
3968(i) New 22.11.8 [bit.endian] std::endian::native value should be more specific about object representations Yes 4

Section 23 (376 issues)

(view only non-Ready open issues)

Issue Status Section Title Proposed Resolution Priority Duplicates
4176(i) New 23 [containers] Refer back to container requirements when extending them No
4173(i) New 23 [containers] Better term for "references, pointers and iterators to elements" No
2307(i) LEWG 23 [containers] Should the Standard Library use explicit only when necessary? No 2
2885(i) LEWG 23 [containers] The relational operators of optional and variant completely reflect the semantics of the element types — this is inconsistent with other types in the library No
2884(i) LEWG 23 [containers] Relational operators for containers should sfinae; if the underlying type is not comparable, neither should the container be No
2193(i) C++14 23 [containers] Default constructors for standard library containers are explicit Yes 1
774(i) C++11 23 [containers] Member swap undefined for most containers Yes
868(i) C++11 23 [containers] Default construction and value-initialization Yes
883(i) C++11 23 [containers] swap circular definition Yes
2913(i) Resolved 23 [containers] Containers need deduction guides Yes
767(i) Resolved 23 [containers] Forwarding and backward compatibility Yes
1242(i) NAD 23 [containers] Enable SCARY iterators Yes
97(i) NAD 23 [containers] Insert inconsistent definition Yes
470(i) NAD 23 [containers] accessing containers from their elements' special functions Yes
3059(i) New 23.2 [container.requirements] Wrong requirements for map-like associative container assignment? No 3
2261(i) C++17 23.2 [container.requirements] Are containers required to use their 'pointer' type internally? Yes 2
704(i) C++11 23.2 [container.requirements] MoveAssignable requirement for container value type overly strict Yes
861(i) C++11 23.2 [container.requirements] Incomplete specification of EqualityComparable for std::forward_list Yes
1416(i) C++11 23.2 [container.requirements] forward_list::erase_after should not be allowed to throw Yes
179(i) CD1 23.2 [container.requirements] Comparison of const_iterators to iterators doesn't work Yes
276(i) CD1 23.2 [container.requirements] Assignable requirement for container value type overly strict Yes
322(i) CD1 23.2 [container.requirements] iterator and const_iterator should have the same value type Yes
371(i) CD1 23.2 [container.requirements] Stability of multiset and multimap member functions Yes
589(i) CD1 23.2 [container.requirements] Requirements on iterators of member template functions of containers Yes 536
675(i) CD1 23.2 [container.requirements] Move assignment of containers Yes
759(i) CD1 23.2 [container.requirements] A reference is not an object Yes
766(i) CD1 23.2 [container.requirements] Inconsistent exception guarantees between ordered and unordered associative containers Yes
842(i) CD1 23.2 [container.requirements] ConstructibleAsElement and bit containers Yes
51(i) TC1 23.2 [container.requirements] Requirement to not invalidate iterators missing Yes
760(i) NAD 23.2 [container.requirements] The emplace issue Yes 2
279(i) NAD 23.2 [container.requirements] const and non-const iterators should have equivalent typedefs Yes
632(i) NAD 23.2 [container.requirements] Time complexity of size() for std::set Yes
1330(i) NAD 23.2 [container.requirements] Move container requirements into requirements tables Yes
479(i) Dup 23.2 [container.requirements] Container requirements and placement new Yes 580
536(i) Dup 23.2 [container.requirements] Container iterator constructor and explicit convertibility Yes 589
2269(i) New 23.2.2 [container.requirements.general] Container iterators and argument-dependent lookup No 4
2321(i) Open 23.2.2 [container.requirements.general] Moving containers should (usually) be required to preserve iterators Yes 3
1521(i) Open 23.2.2 [container.requirements.general] Requirements on internal pointer representations in containers Yes 3
3028(i) C++23 23.2.2 [container.requirements.general] Container requirements tables should distinguish const and non-const variables Yes 3
3352(i) C++20 23.2.2 [container.requirements.general] strong_equality isn't a thing Yes 1
2218(i) C++17 23.2.2 [container.requirements.general] Unclear how containers use allocator_traits::construct() Yes 3
2448(i) C++17 23.2.2 [container.requirements.general] Non-normative Container destructor specification Yes 0
2794(i) C++17 23.2.2 [container.requirements.general] Missing requirements for allocator pointers Yes 0
2177(i) C++14 23.2.2 [container.requirements.general] Requirements on Copy/MoveInsertable Yes
2182(i) C++14 23.2.2 [container.requirements.general] Container::[const_]reference types are misleadingly specified Yes 0
2308(i) C++14 23.2.2 [container.requirements.general] Clarify container destructor requirements w.r.t. std::array Yes 0
2320(i) C++14 23.2.2 [container.requirements.general] select_on_container_copy_construction() takes allocators, not containers Yes 0
2105(i) C++14 23.2.2 [container.requirements.general] Inconsistent requirements on const_iterator's value_type Yes
2211(i) C++14 23.2.2 [container.requirements.general] Replace ambiguous use of "Allocator" in container requirements Yes
2257(i) C++14 23.2.2 [container.requirements.general] Simplify container requirements with the new algorithms Yes
1034(i) C++11 23.2.2 [container.requirements.general] Clarify generality of Container Requirement tables Yes
1319(i) C++11 23.2.2 [container.requirements.general] Containers should require an iterator that is at least a Forward Iterator Yes
985(i) Resolved 23.2.2 [container.requirements.general] Allowing throwing move Yes
580(i) NAD Editorial 23.2.2 [container.requirements.general] unused allocator members Yes 479
1415(i) NAD Editorial 23.2.2 [container.requirements.general] Iterator stability bans the short-string optimization Yes
1035(i) NAD 23.2.2 [container.requirements.general] <array>::swap can invalidate references, pointers, and iterators Yes
2167(i) NAD 23.2.2 [container.requirements.general] Copy assignment requirements of Containers Yes
3431(i) WP 23.2.2.4 [container.opt.reqmts] <=> for containers should require three_way_comparable<T> instead of <=> Yes 2
3976(i) New 23.2.2.5 [container.alloc.reqmts] What does it mean for a type to be "allocator aware"? No
3957(i) WP 23.2.2.5 [container.alloc.reqmts] §[container.alloc.reqmts] The value category of v should be claimed Yes
2200(i) C++14 23.2.3 [container.requirements.dataraces] Data race avoidance for all containers, not only for sequences Yes
1329(i) Resolved 23.2.3 [container.requirements.dataraces] Data races on vector<bool> Yes
3297(i) New 23.2.4 [sequence.reqmts] Useless sequence container requirement Yes 3
2705(i) New 23.2.4 [sequence.reqmts] Questionable precondition on Sequence containers a.assign(n, t) Yes 3
2206(i) Open 23.2.4 [sequence.reqmts] Inaccuracy in initializer_list constructor requirements Yes 3
4147(i) WP 23.2.4 [sequence.reqmts] Precondition on inplace_vector::emplace Yes
3927(i) WP 23.2.4 [sequence.reqmts] Unclear preconditions for operator[] for sequence containers Yes
3732(i) C++23 23.2.4 [sequence.reqmts] prepend_range and append_range can't be amortized constant time Yes
3742(i) C++23 23.2.4 [sequence.reqmts] deque::prepend_range needs to permute Yes 2
2266(i) C++17 23.2.4 [sequence.reqmts] vector and deque have incorrect insert requirements Yes 2
2698(i) C++17 23.2.4 [sequence.reqmts] Effect of assign() on iterators/pointers/references Yes 0
2231(i) C++14 23.2.4 [sequence.reqmts] DR 704 removes complexity guarantee for clear() Yes
149(i) C++11 23.2.4 [sequence.reqmts] Insert should return iterator to first element inserted Yes
1037(i) C++11 23.2.4 [sequence.reqmts] Unclear status of match_results as library container Yes
1038(i) C++11 23.2.4 [sequence.reqmts] Sequence requirement table needs to reference several new containers Yes
1039(i) C++11 23.2.4 [sequence.reqmts] Sequence container back function should also support const_iterator Yes
1234(i) C++11 23.2.4 [sequence.reqmts] "Do the right thing" and NULL Yes
355(i) CD1 23.2.4 [sequence.reqmts] Operational semantics for a.back() Yes
438(i) CD1 23.2.4 [sequence.reqmts] Ambiguity in the "do the right thing" clause Yes
139(i) TC1 23.2.4 [sequence.reqmts] Optional sequence operation table description unclear Yes
151(i) TC1 23.2.4 [sequence.reqmts] Can't currently clear() empty container Yes
725(i) NAD Editorial 23.2.4 [sequence.reqmts] Optional sequence container requirements column label Yes
1058(i) NAD Editorial 23.2.4 [sequence.reqmts] New container issue Yes
1301(i) NAD Editorial 23.2.4 [sequence.reqmts] clear() and assignment Yes
526(i) NAD 23.2.4 [sequence.reqmts] Is it undefined if a function in the standard changes in parameters? Yes
1259(i) NAD 23.2.4 [sequence.reqmts] Should initializer-list constructors move elements? Yes
1036(i) NAD Concepts 23.2.4 [sequence.reqmts] Remove iterator specification that is redundant due to concept constraints Yes
4159(i) New 23.2.5 [container.node] Uses-allocator construction mechanisms should be opted out for node handles Yes 3
3438(i) New 23.2.5.1 [container.node.overview] §[container.node.overview] missing multiset/map cases No 3
2743(i) C++23 23.2.5.1 [container.node.overview] p0083r3 node_handle private members missing "exposition only" comment Yes 3
3227(i) New 23.2.7 [associative.reqmts] Ambiguity issue for extract in ordered and unordered associative containers Yes 3
2362(i) New 23.2.7 [associative.reqmts] unique, associative emplace() should not move/copy the mapped_type constructor arguments when no insertion happens No 3
2844(i) Open 23.2.7 [associative.reqmts] Stability of a_uniq.insert(i, j) No 3
2227(i) Open 23.2.7 [associative.reqmts] Stateful comparison objects in associative containers No 3
2215(i) Open 23.2.7 [associative.reqmts] (unordered) associative container functors should be CopyConstructible Yes 3
2436(i) C++17 23.2.7 [associative.reqmts] Comparators for associative containers should always be CopyConstructible Yes 2
2542(i) C++17 23.2.7 [associative.reqmts] Missing const requirements for associative containers Yes 1
2322(i) C++14 23.2.7 [associative.reqmts] Associative(initializer_list, stuff) constructors are underspecified Yes 0
1214(i) C++14 23.2.7 [associative.reqmts] Insufficient/inconsistent key immutability requirements for associative containers Yes
2258(i) C++14 23.2.7 [associative.reqmts] a.erase(q1, q2) unable to directly return q2 Yes 0
2299(i) C++14 23.2.7 [associative.reqmts] [CD] Effects of inaccessible key_compare::is_transparent type are not clear Yes 1
982(i) C++11 23.2.7 [associative.reqmts] Wrong complexity for initializer_list assignment in Table 85 Yes
1040(i) C++11 23.2.7 [associative.reqmts] Clarify possible sameness of associative container's iterator and const_iterator Yes
1253(i) C++11 23.2.7 [associative.reqmts] invalidation of iterators and emplace vs. insert inconsistence in assoc. containers Yes
103(i) CD1 23.2.7 [associative.reqmts] set::iterator is required to be modifiable, but this allows modification of keys Yes
130(i) CD1 23.2.7 [associative.reqmts] Return type of container::erase(iterator) differs for associative containers Yes 451
233(i) CD1 23.2.7 [associative.reqmts] Insertion hints in associative containers Yes 192, 246
264(i) CD1 23.2.7 [associative.reqmts] Associative container insert(i, j) complexity requirements are not feasible. Yes 102
316(i) CD1 23.2.7 [associative.reqmts] Vague text in Table 69 Yes
354(i) CD1 23.2.7 [associative.reqmts] Associative container lower/upper bound requirements Yes
224(i) TC1 23.2.7 [associative.reqmts] clear() complexity for associative containers refers to undefined N Yes
1041(i) Resolved 23.2.7 [associative.reqmts] Add associative/unordered container functions that allow to extract elements Yes
2830(i) Resolved 23.2.7 [associative.reqmts] insert_return_type is only defined for containers with unique keys Yes
2052(i) Resolved 23.2.7 [associative.reqmts] Mixup between mapped_type and value_type for associative containers Yes 2
2430(i) NAD 23.2.7 [associative.reqmts] Heterogeneous container lookup should be enabled using meta-function instead of nested type Yes
2772(i) NAD 23.2.7 [associative.reqmts] Inconsistency in the insert(node) interface Yes 2
82(i) NAD 23.2.7 [associative.reqmts] Missing constant for set elements Yes
192(i) NAD 23.2.7 [associative.reqmts] a.insert(p,t) is inefficient and overconstrained Yes 233
215(i) NAD 23.2.7 [associative.reqmts] Can a map's key_type be const? Yes
494(i) NAD 23.2.7 [associative.reqmts] Wrong runtime complexity for associative container's insert and delete Yes
763(i) NAD 23.2.7 [associative.reqmts] Renaming emplace() overloads Yes
1302(i) NAD 23.2.7 [associative.reqmts] different emplace semantics for sequence and associated containers Yes
102(i) Dup 23.2.7 [associative.reqmts] Bug in insert range in associative containers Yes 264
246(i) Dup 23.2.7 [associative.reqmts] a.insert(p,t) is incorrectly specified Yes 233
451(i) Dup 23.2.7 [associative.reqmts] Associative erase should return an iterator Yes 130
3578(i) New 23.2.7.1 [associative.reqmts.general] Iterator SCARYness in the context of associative container merging Yes 3
4132(i) New 23.2.7.1 [associative.reqmts.general] Throws specifications need to include boolean-testable operations Yes 3
3577(i) New 23.2.7.1 [associative.reqmts.general] Merging an (unordered) associative container with itself No 3
3691(i) New 23.2.7.1 [associative.reqmts.general] Replacement of keys in associative containers Yes 3
4046(i) New 23.2.7.2 [associative.reqmts.except] Effects of inserting into or erasing from flat container adaptors when an exception is thrown need to be more permissive No 2
1175(i) Open 23.2.8 [unord.req] unordered complexity Yes 3
2198(i) Open 23.2.8 [unord.req] max_load_factor(z) makes no strong guarantees, but bans useful behavior Yes 3
2977(i) C++20 23.2.8 [unord.req] unordered_meow::merge() has incorrect Throws: clause Yes 0
2156(i) C++17 23.2.8 [unord.req] Unordered containers' reserve(n) reserves for n-1 elements Yes 3
2540(i) C++17 23.2.8 [unord.req] unordered_multimap::insert hint iterator Yes 3
2550(i) C++17 23.2.8 [unord.req] Wording of unordered container's clear() method complexity Yes 2
2304(i) C++14 23.2.8 [unord.req] Complexity of count in unordered associative containers Yes 0
2356(i) C++14 23.2.8 [unord.req] Stability of erasure in unordered associative containers Yes 2
869(i) C++11 23.2.8 [unord.req] Bucket (local) iterators and iterating past end Yes
870(i) C++11 23.2.8 [unord.req] Do unordered containers not support function pointers for predicate/hasher? Yes
981(i) C++11 23.2.8 [unord.req] Unordered container requirements should add initializer_list support Yes
1189(i) C++11 23.2.8 [unord.req] Awkward interface for changing the number of buckets in an unordered associative container Yes
1197(i) C++11 23.2.8 [unord.req] Can unordered containers have bucket_count() == 0? Yes
518(i) CD1 23.2.8 [unord.req] Are insert and erase stable for unordered_multiset and unordered_multimap? Yes
2831(i) Resolved 23.2.8 [unord.req] Equality can be defined when Hash function objects have different behaviour Yes
3176(i) Resolved 23.2.8 [unord.req] Underspecified behavior of unordered containers when Container::key_equal differs from Pred Yes 2
3468(i) NAD 23.2.8 [unord.req] Transparent lookups in unordered containers are inconsistent Yes
1188(i) NAD 23.2.8 [unord.req] Unordered containers should have a minimum load factor as well as a maximum Yes
2199(i) NAD 23.2.8 [unord.req] unordered containers are required to have an initial max load factor of 1.0 Yes 3
579(i) NAD 23.2.8 [unord.req] erase(iterator) for unordered containers should not return an iterator Yes
764(i) NAD 23.2.8 [unord.req] equal_range on unordered containers should return a pair of local_iterators Yes
1190(i) NAD 23.2.8 [unord.req] Setting the maximum load factor should return the previous value Yes
2006(i) NAD 23.2.8 [unord.req] emplace broken for associative containers Yes
3622(i) C++23 23.2.8.1 [unord.req.general] Misspecified transitivity of equivalence in §[unord.req.general] Yes 2
2189(i) Open 23.2.8.2 [unord.req.except] Throwing swap breaks unordered containers' state No 3
2209(i) C++14 23.3 [sequences] assign() overspecified for sequence containers Yes
2210(i) C++14 23.3 [sequences] Missing allocator-extended constructor for allocator-aware containers Yes
679(i) CD1 23.3 [sequences] resize parameter by value Yes
1042(i) NAD 23.3 [sequences] Provide ContiguousStorage concept and apply it to corresponding containers Yes
2427(i) C++17 23.3.1 [sequences.general] Container adaptors as sequence containers, redux Yes 0
2914(i) Resolved 23.3.2 [array.syn] std::array does not support class-template deduction from initializers Yes
617(i) Open 23.3.3 [array] std::array is a sequence that doesn't satisfy the sequence requirements? No 3
1306(i) C++11 23.3.3 [array] pointer and const_pointer for <array> Yes
519(i) CD1 23.3.3 [array] Data() undocumented Yes
720(i) CD1 23.3.3 [array] Omissions in constexpr usages Yes
776(i) CD1 23.3.3 [array] Undescribed assign function of std::array Yes
2443(i) Resolved 23.3.3 [array] std::array member functions should be constexpr Yes
2335(i) NAD 23.3.3 [array] array<array<int, 3>, 4> should be layout-compatible with int[4][3] Yes 3
851(i) NAD 23.3.3 [array] simplified array construction Yes
588(i) NAD 23.3.3 [array] requirements on zero sized tr1::arrays and other details Yes
930(i) NAD 23.3.3 [array] Access to std::array data as built-in array type Yes
3219(i) New 23.3.3.1 [array.overview] std::array overview container requirements are incorrect Yes 3
2823(i) Open 23.3.3.1 [array.overview] std::array initialization is still not permissive enough Yes 3
2310(i) C++17 23.3.3.1 [array.overview] Public exposition only member in std::array Yes 4
2590(i) C++17 23.3.3.1 [array.overview] Aggregate initialization for std::array Yes 0
2897(i) Resolved 23.3.3.1 [array.overview] array::iterator and array::const_iterator should be literal types Yes 2
3488(i) Open 23.3.3.4 [array.special] Is array<const int, 0> swappable or not? Yes 3
2157(i) Open 23.3.3.5 [array.zero] How does std::array<T,0> initialization work when T is not default-constructible? Yes 3
1417(i) C++11 23.3.3.5 [array.zero] front/back on a zero-sized array should be undefined Yes
237(i) CD1 23.3.5.2 [deque.cons] Undefined expression in complexity specification Yes
144(i) TC1 23.3.5.2 [deque.cons] Deque constructor complexity wrong Yes
1418(i) C++11 23.3.5.3 [deque.capacity] Effects of resize(size()) on a deque Yes
850(i) CD1 23.3.5.3 [deque.capacity] Should shrink_to_fit apply to std::deque? Yes
855(i) NAD 23.3.5.3 [deque.capacity] capacity() and reserve() for deque? Yes
4123(i) New 23.3.5.4 [deque.modifiers] Container effects use "the assignment operator or move assignment operator" Yes 3
3308(i) New 23.3.5.4 [deque.modifiers] vector and deque iterator erase invalidates elements even when no change occurs Yes 3
2953(i) C++20 23.3.5.4 [deque.modifiers] LWG 2853 should apply to deque::erase too Yes 0
2364(i) C++17 23.3.5.4 [deque.modifiers] deque and vector pop_back don't specify iterator invalidation requirements Yes 0
2477(i) C++17 23.3.5.4 [deque.modifiers] Inconsistency of wordings in std::vector::erase() and std::deque::erase() Yes 0
638(i) CD1 23.3.5.4 [deque.modifiers] deque end invalidation during erase Yes
878(i) C++11 23.3.7 [forward.list] forward_list preconditions Yes
1276(i) C++11 23.3.7 [forward.list] forwardlist missing allocator constructors Yes
1419(i) NAD Editorial 23.3.7 [forward.list] forward_list::erase_after should return an iterator Yes
2042(i) C++11 23.3.7.3 [forward.list.iter] Comparing forward_list::before_begin() to forward_list::end() Yes
4164(i) WP 23.3.7.5 [forward.list.modifiers] Missing guarantees for forward_list modifiers Yes 3
3817(i) C++23 23.3.7.5 [forward.list.modifiers] Missing preconditions on forward_list modifiers Yes
2585(i) C++17 23.3.7.5 [forward.list.modifiers] forward_list::resize(size_type, const value_type&) effects incorrect Yes 0
1278(i) C++11 23.3.7.5 [forward.list.modifiers] Inconsistent return values for forward_list::insert_after Yes
1340(i) C++11 23.3.7.5 [forward.list.modifiers] Why does forward_list::resize take the object to be copied by value? Yes
897(i) Resolved 23.3.7.5 [forward.list.modifiers] Forward_list issues... Part 2 Yes
3088(i) C++23 23.3.7.6 [forward.list.ops] forward_list::merge behavior unclear when passed *this Yes 3
3017(i) C++20 23.3.7.6 [forward.list.ops] list splice functions should use addressof Yes 0
2045(i) C++14 23.3.7.6 [forward.list.ops] forward_list::merge and forward_list::splice_after with unequal allocators Yes
2123(i) C++14 23.3.7.6 [forward.list.ops] merge() allocator requirements for lists versus forward lists Yes
2222(i) C++14 23.3.7.6 [forward.list.ops] Inconsistency in description of forward_list::splice_after single-element overload Yes
898(i) C++11 23.3.7.6 [forward.list.ops] Small contradiction in n2723 to forward to committee Yes
1133(i) C++11 23.3.7.6 [forward.list.ops] Does N2844 break current specification of list::splice? Yes
1310(i) C++11 23.3.7.6 [forward.list.ops] forward_list splice_after from lvalues Yes
892(i) NAD Editorial 23.3.7.6 [forward.list.ops] Forward_list issues... Yes
919(i) NAD 23.3.7.6 [forward.list.ops] (forward_)list specialized remove algorithms are over constrained Yes
4135(i) WP 23.3.7.7 [forward.list.erasure] The helper lambda of std::erase for list should specify return type as bool Yes
307(i) CD1 23.3.9 [list] Lack of reference typedefs in container adaptors Yes
320(i) CD1 23.3.9.2 [list.cons] list::assign overspecified Yes
410(i) CD1 23.3.9.2 [list.cons] Missing semantics for stack and queue comparison operators Yes
1420(i) C++11 23.3.9.3 [list.capacity] Effects of resize(size()) on a list Yes
132(i) TC1 23.3.9.3 [list.capacity] list::resize description uses random access iterators Yes
2997(i) C++23 23.3.9.5 [list.ops] LWG 491 and the specification of {forward_,}list::unique Yes 3
2998(i) C++20 23.3.9.5 [list.ops] Requirements on function objects passed to {forward_,}list-specific algorithms Yes 0
3087(i) C++20 23.3.9.5 [list.ops] One final &x in §[list.ops] Yes 3
2824(i) C++17 23.3.9.5 [list.ops] list::sort should say that the order of elements is unspecified if an exception is thrown Yes 0
2122(i) C++14 23.3.9.5 [list.ops] merge() stability for lists versus forward lists Yes
1207(i) C++11 23.3.9.5 [list.ops] Underspecified std::list operations? Yes
1215(i) C++11 23.3.9.5 [list.ops] list::merge with unequal allocators Yes
250(i) CD1 23.3.9.5 [list.ops] splicing invalidates iterators Yes
278(i) CD1 23.3.9.5 [list.ops] What does iterator validity mean? Yes
300(i) CD1 23.3.9.5 [list.ops] list::merge() specification incomplete Yes
315(i) CD1 23.3.9.5 [list.ops] Bad "range" in list::unique complexity Yes
2279(i) NAD 23.3.9.5 [list.ops] Carefully state effects of list::splice function Yes
131(i) NAD 23.3.9.5 [list.ops] list::splice throws nothing Yes
491(i) NAD 23.3.9.5 [list.ops] std::list<>::unique incorrectly specified Yes
464(i) CD1 23.3.11 [vector] Suggestion for new member functions in standard containers Yes
469(i) CD1 23.3.11 [vector] vector<bool> ill-formed relational operators Yes
496(i) CD1 23.3.11 [vector] Illegal use of "T" in vector<bool> Yes
69(i) TC1 23.3.11 [vector] Must elements of a vector be contiguous? Yes
101(i) NAD Editorial 23.3.11 [vector] No way to free storage for vector and deque Yes
757(i) NAD Editorial 23.3.11 [vector] Typo in the synopsis of vector Yes
1184(i) NAD 23.3.11 [vector] Feature request: dynamic bitset Yes
96(i) NAD 23.3.11 [vector] Vector<bool> is not a container Yes
134(i) TC1 23.3.11.2 [vector.cons] vector constructors over specified Yes
3758(i) New 23.3.11.3 [vector.capacity] Element-relocating operations of std::vector and std::deque should conditionally require Cpp17CopyInsertable in their preconditions No 3
2158(i) Open 23.3.11.3 [vector.capacity] Conditional copy/move in std::vector Yes 3
1102(i) Open 23.3.11.3 [vector.capacity] std::vector's reallocation policy still unclear Yes 3
2160(i) C++17 23.3.11.3 [vector.capacity] Unintended destruction ordering-specification of resize Yes 1
2223(i) C++17 23.3.11.3 [vector.capacity] shrink_to_fit effect on iterator validity Yes 2
2323(i) C++14 23.3.11.3 [vector.capacity] vector::resize(n, t)'s specification should be simplified Yes 0
2033(i) C++14 23.3.11.3 [vector.capacity] Preconditions of reserve, shrink_to_fit, and resize functions Yes
1525(i) C++11 23.3.11.3 [vector.capacity] Effects of resize(size()) on a vector Yes
329(i) CD1 23.3.11.3 [vector.capacity] vector capacity, reserve and reallocation Yes
341(i) CD1 23.3.11.3 [vector.capacity] Vector reallocation and swap Yes
755(i) CD1 23.3.11.3 [vector.capacity] std::vector and std:string lack explicit shrink-to-fit operations Yes
2066(i) Resolved 23.3.11.3 [vector.capacity] Missing specification of vector::resize(size_type) Yes
1246(i) NAD 23.3.11.3 [vector.capacity] vector::resize() missing efficiency guarantee Yes
2596(i) C++17 23.3.11.4 [vector.data] vector::data() should use addressof Yes 0
1312(i) C++11 23.3.11.4 [vector.data] vector::data no longer returns a raw pointer Yes
2164(i) C++20 23.3.11.5 [vector.modifiers] What are the semantics of vector.emplace(vector.begin(), vector.back())? Yes 2
3077(i) C++20 23.3.11.5 [vector.modifiers] (push|emplace)_back should invalidate the end iterator Yes 3
2853(i) C++17 23.3.11.5 [vector.modifiers] Possible inconsistency in specification of erase in [vector.modifiers] Yes 0
2252(i) C++14 23.3.11.5 [vector.modifiers] Strong guarantee on vector::push_back() still broken with C++11? Yes
247(i) CD1 23.3.11.5 [vector.modifiers] vector, deque::insert complexity Yes
406(i) CD1 23.3.11.5 [vector.modifiers] vector::insert(s) exception safety Yes
414(i) CD1 23.3.11.5 [vector.modifiers] Which iterators are invalidated by v.erase()? Yes
2256(i) NAD 23.3.11.5 [vector.modifiers] On vector iterator invalidation Yes 3
2449(i) NAD 23.3.11.5 [vector.modifiers] vector::insert invalidates end()? Yes 3
3638(i) New 23.3.12 [vector.bool] vector<bool>::swap(reference, reference) is useless Yes 3
1422(i) Open 23.3.12 [vector.bool] vector<bool> iterators are not random access No 3
2187(i) C++14 23.3.12 [vector.bool] vector<bool> is missing emplace and emplace_back member functions Yes
814(i) C++11 23.3.12 [vector.bool] vector<bool>::swap(reference, reference) not defined Yes
1254(i) C++11 23.3.12 [vector.bool] Misleading sentence in vector<bool>::flip Yes
1284(i) C++11 23.3.12 [vector.bool] vector<bool> initializer_list constructor missing an allocator argument Yes
751(i) NAD 23.3.12 [vector.bool] change pass-by-reference members of vector<bool> to pass-by-value? Yes
3778(i) C++23 23.3.12.1 [vector.bool.pspc] vector<bool> missing exception specifications Yes
4122(i) New 23.3.14.1 [inplace.vector.overview] Ill-formed operator<=> can cause hard error when instantiating std::inplace_vector Yes 2
4151(i) New 23.3.14.5 [inplace.vector.modifiers] Precondition of inplace_vector::swap Yes 2
839(i) Resolved 23.4 [associative] Maps and sets missing splice operation Yes
2012(i) Resolved 23.4 [associative] Associative maps should insert pair, not tuple Yes
2161(i) NAD 23.4 [associative] const equivalence of std::map Yes 2
1111(i) NAD Concepts 23.4 [associative] associative containers underconstrained Yes
2059(i) C++17 23.4.3 [map] C++0x ambiguity problem with map::erase Yes 3
2300(i) C++14 23.4.3 [map] [CD] Redundant sections for map and multimap members should be removed Yes
1423(i) C++11 23.4.3 [map] map constructor accepting an allocator as single parameter should be explicit Yes
133(i) TC1 23.4.3 [map] map missing get_allocator() Yes
140(i) NAD Editorial 23.4.3 [map] map<Key, T>::value_type does not satisfy the assignable requirement Yes
1296(i) NAD 23.4.3 [map] map and multimap value_compare overspecified Yes
3531(i) New 23.4.3.1 [map.overview] LWG 3025 broke previous valid code Yes 3
3025(i) C++20 23.4.3.1 [map.overview] Map-like container deduction guides should use pair<Key, T>, not pair<const Key, T> Yes 2
2354(i) C++17 23.4.3.1 [map.overview] Unnecessary copying when inserting into maps with braced-init syntax Yes 2
2469(i) C++17 23.4.3.3 [map.access] Wrong specification of Requires clause of operator[] for map and unordered_map Yes 3
2007(i) C++11 23.4.3.3 [map.access] Incorrect specification of return value for map<>::at() Yes
334(i) CD1 23.4.3.3 [map.access] map::operator[] specification forces inefficient implementation Yes
703(i) CD1 23.4.3.3 [map.access] map::at() need a complexity specification Yes
2274(i) Resolved 23.4.3.3 [map.access] Does map::operator[] value-initialize or default-insert a missing element? Yes 3
2464(i) C++17 23.4.3.4 [map.modifiers] try_emplace and insert_or_assign misspecified Yes 2
2571(i) C++17 23.4.3.4 [map.modifiers] §[map.modifiers]/2 imposes nonsensical requirement on insert(InputIterator, InputIterator) Yes 0
2005(i) C++14 23.4.3.4 [map.modifiers] unordered_map::insert(T&&) protection should apply to map too Yes
1424(i) C++11 23.4.4 [multimap] multimap constructor accepting an allocator as a single parameter should be explicit Yes
1091(i) NAD 23.4.4.3 [multimap.modifiers] Multimap description confusing Yes
1425(i) C++11 23.4.6 [set] set constructor accepting an allocator as a single parameter should be explicit Yes
214(i) CD1 23.4.6 [set] set::find() missing const overload Yes 450
450(i) Dup 23.4.6 [set] set::find is inconsistent with associative container requirements Yes 214
3704(i) C++23 23.4.6.1 [set.overview] LWG 2059 added overloads that might be ill-formed for sets Yes
2076(i) C++17 23.4.6.2 [set.cons] Bad CopyConstructible requirement in set constructors Yes 3
1426(i) C++11 23.4.7 [multiset] multiset constructor accepting an allocator as a single parameter should be explicit Yes
2713(i) New 23.5 [unord] More missing allocator-extended constructors for unordered containers Yes 3
2230(i) C++17 23.5 [unord] "see below" for initializer-list constructors of unordered containers Yes 4
2050(i) C++14 23.5 [unord] Unordered associative containers do not use allocator_traits to define member types Yes
676(i) C++11 23.5 [unord] Moving the unordered containers Yes
691(i) CD1 23.5 [unord] const_local_iterator cbegin, cend missing from TR1 Yes
852(i) CD1 23.5 [unord] unordered containers begin(n) mistakenly const Yes
1248(i) Resolved 23.5 [unord] Equality comparison for unordered containers Yes
528(i) NAD 23.5 [unord] const_iterator iterator issue when they are the same type Yes
2026(i) NAD 23.5 [unord] hash should be std qualified for unordered container Yes
1427(i) C++11 23.5.3 [unord.map] unordered_map constructor accepting an allocator as a single parameter should be explicit Yes
1519(i) C++11 23.5.3 [unord.map] bucketsize() const only for unordered set Yes
761(i) CD1 23.5.3.3 [unord.map.elem] unordered_map needs an at() member function Yes
1428(i) C++11 23.5.4 [unord.multimap] unordered_multimap constructor accepting an allocator as a single parameter should be explicit Yes
1429(i) C++11 23.5.6 [unord.set] unordered_set constructor accepting an allocator as a single parameter should be explicit Yes
2982(i) C++20 23.5.6.1 [unord.set.overview] Making size_type consistent in associative container deduction guides Yes 2
1430(i) C++11 23.5.7 [unord.multiset] unordered_multiset constructor accepting an allocator as a single parameter should be explicit Yes
2566(i) C++17 23.6 [container.adaptors] Requirements on the first template parameter of container adaptors Yes 0
2194(i) C++14 23.6 [container.adaptors] Impossible container requirements for adaptor types Yes
1199(i) C++11 23.6 [container.adaptors] Missing extended copy constructor in container adaptors Yes
1194(i) C++11 23.6 [container.adaptors] Unintended queue constructor Yes
1198(i) C++11 23.6 [container.adaptors] Container adaptor swap: member or non-member? Yes
2915(i) Resolved 23.6 [container.adaptors] The three container adapters should each have a deduction guide Yes
756(i) Resolved 23.6 [container.adaptors] Container adaptors push Yes
1421(i) Resolved 23.6 [container.adaptors] Accidental move-only library types due to new core language rules Yes 1350
3781(i) C++23 23.6.1 [container.adaptors.general] The exposition-only alias templates cont-key-type and cont-mapped-type should be removed Yes
2783(i) C++20 23.6.3.1 [queue.defn] stack::emplace() and queue::emplace() should return decltype(auto) Yes 2
3189(i) New 23.6.4 [priority.queue] Missing requirement for std::priority_queue No 3
3506(i) C++23 23.6.4 [priority.queue] Missing allocator-extended constructors for priority_queue Yes 3
3522(i) C++23 23.6.4 [priority.queue] Missing requirement on InputIterator template parameter for priority_queue constructors Yes
3529(i) C++23 23.6.4 [priority.queue] priority_queue(first, last) should construct c with (first, last) Yes
2684(i) C++17 23.6.4 [priority.queue] priority_queue lacking comparator typedef Yes 0
2552(i) NAD 23.6.4 [priority.queue] priority_queue doesn't work with move-only types Yes 3
1196(i) Resolved 23.6.4.2 [priqueue.cons] move semantics undefined for priority_queue Yes
2537(i) C++17 23.6.4.3 [priqueue.cons.alloc] Constructors for priority_queue taking allocators should call make_heap Yes 0
3723(i) C++23 23.6.4.4 [priqueue.members] priority_queue::push_range needs to append_range Yes 2
3161(i) Open 23.6.6 [stack] Container adapters mandate use of emplace_back but don't require it Yes 3
1186(i) NAD Concepts 23.6.6 [stack] Forward list could model a stack Yes
976(i) Resolved 23.6.6.2 [stack.defn] Class template std::stack should be movable Yes
3959(i) New 23.6.8 [flat.map] Should the comparator of std::flat_map/std::flat_multimap be copied twice in some operations? No
3802(i) New 23.6.8 [flat.map] flat_foo allocator-extended constructors lack move semantics No 2
3804(i) New 23.6.8 [flat.map] flat_foo missing some allocator-extended deduction guides No 2
3884(i) WP 23.6.8 [flat.map] flat_foo is missing allocator-extended copy/move constructors Yes
3803(i) C++23 23.6.8 [flat.map] flat_foo constructors taking KeyContainer lack KeyCompare parameter Yes 1
3966(i) New 23.6.8.1 [flat.map.overview] The value_type and reference members of std::flat_(multi)map::(const_)iterator are unclear No 3
3816(i) C++23 23.6.8.1 [flat.map.overview] flat_map and flat_multimap should impose sequence container requirements Yes
3963(i) New 23.6.8.2 [flat.map.defn] Different std::flat_map/std::flat_multimap specializations should be able to share same nested classes Yes 3
3786(i) C++23 23.6.8.2 [flat.map.defn] Flat maps' deduction guide needs to default Allocator to be useful Yes 2
4000(i) New 23.6.8.7 [flat.map.modifiers] flat_map::insert_range's Effects is not quite right Yes 3
3774(i) C++23 23.6.10 [flat.set.syn] <flat_set> should include <compare> Yes
4048(i) New 23.6.11 [flat.set] Inconsistent preconditions for transparent insertion of std::flat_map/std::flat_set Yes 2
3879(i) C++23 23.6.11.6 [flat.set.erasure] erase_if for flat_{,multi}set is incorrectly specified Yes
3881(i) C++23 23.6.13 [container.adaptors.format] Incorrect formatting of container adapters backed by std::string Yes
3813(i) New 23.7.2.2.1 [span.overview] std::span<volatile T, E> is made ill-formed by P2278R4 when T is a normal class type No 2
3203(i) WP 23.7.2.2.1 [span.overview] span element access invalidation Yes 2
3903(i) WP 23.7.2.2.1 [span.overview] span destructor is redundantly noexcept Yes
3102(i) C++20 23.7.2.2.1 [span.overview] Clarify span iterator and const_iterator behavior Yes 0
3144(i) C++20 23.7.2.2.1 [span.overview] span does not have a const_pointer typedef Yes 0
3369(i) C++20 23.7.2.2.1 [span.overview] span's deduction-guide for built-in arrays doesn't work Yes 0
3100(i) C++20 23.7.2.2.2 [span.cons] Unnecessary and confusing "empty span" wording Yes 0
3101(i) C++20 23.7.2.2.2 [span.cons] span's Container constructors need another constraint Yes 1
3198(i) C++20 23.7.2.2.2 [span.cons] Bad constraint on std::span::span() Yes
3255(i) C++20 23.7.2.2.2 [span.cons] span's array constructor is too strict Yes 2
3358(i) C++20 23.7.2.2.2 [span.cons] §[span.cons] is mistaken that to_address can throw Yes 0
3103(i) C++20 23.7.2.2.4 [span.sub] Errors in taking subview of span should be ill-formed where possible Yes 3
4011(i) WP 23.7.2.2.6 [span.elem] "Effects: Equivalent to return" in [span.elem] Yes
3320(i) C++20 23.7.2.2.7 [span.iterators] span::cbegin/cend methods produce different results than std::[ranges::]cbegin/cend Yes 0
3995(i) New 23.7.3 [views.multidim] Issue with custom index conversion in <mdspan> No 3
3970(i) WP 23.7.3.2 [mdspan.syn] §[mdspan.syn] Missing definition of full_extent_t and full_extent Yes
4020(i) New 23.7.3.3.2 [mdspan.extents.expo] extents::index-cast weirdness Yes
3876(i) C++23 23.7.3.4 [mdspan.layout] Default constructor of std::layout_XX::mapping misses precondition Yes
3861(i) Resolved 23.7.3.4.7 [mdspan.layout.stride] mdspan layout_stride::mapping default constructor problem Yes 1
4021(i) New 23.7.3.6.1 [mdspan.mdspan.overview] mdspan::is_always_meow() should be noexcept Yes
3974(i) WP 23.7.3.6.3 [mdspan.mdspan.members] mdspan::operator[] should not copy OtherIndexTypes Yes
4060(i) WP 23.7.3.7.7 [mdspan.sub.sub] submdspan preconditions do not forbid creating invalid pointer Yes

Section 24 (206 issues)

(view only non-Ready open issues)

Issue Status Section Title Proposed Resolution Priority Duplicates
3952(i) New 24.2 [iterator.synopsis] iter_common_reference_t does not conform to the definition of indirectly_readable Yes 3
3736(i) C++23 24.2 [iterator.synopsis] move_iterator missing disable_sized_sentinel_for specialization Yes
3765(i) C++23 24.2 [iterator.synopsis] const_sentinel should be constrained Yes
3862(i) C++23 24.2 [iterator.synopsis] basic_const_iterator's common_type specialization is underconstrained Yes
2061(i) C++14 24.2 [iterator.synopsis] make_move_iterator and arrays Yes
2128(i) C++14 24.2 [iterator.synopsis] Absence of global functions cbegin/cend Yes
1320(i) NAD 24.2 [iterator.synopsis] Header for iter_swap Yes
1128(i) NAD Concepts 24.2 [iterator.synopsis] Missing definition of iterator_traits<T*> Yes
1213(i) Open 24.3 [iterator.requirements] Meaning of valid and singular iterator underspecified No 4
2578(i) C++17 24.3 [iterator.requirements] Iterator requirements should reference iterator traits Yes 3
1185(i) Resolved 24.3 [iterator.requirements] Iterator categories and output iterators Yes
1210(i) Resolved 24.3 [iterator.requirements] Iterator reachability should not require a container Yes
1212(i) Resolved 24.3 [iterator.requirements] result of post-increment/decrement operator Yes
408(i) NAD Editorial 24.3 [iterator.requirements] Is vector<reverse_iterator<char*> > forbidden? Yes
446(i) NAD Editorial 24.3 [iterator.requirements] Iterator equality between different containers Yes
2107(i) NAD 24.3 [iterator.requirements] Some iterator category should guarantee the lifetime of references Yes
3259(i) C++20 24.3.1 [iterator.requirements.general] The definition of constexpr iterators should be adjusted Yes 0
2375(i) Resolved 24.3.1 [iterator.requirements.general] Is [iterator.requirements.general]/9 too broadly applied? Yes 3
3110(i) Resolved 24.3.1 [iterator.requirements.general] Contiguous Iterators should always be Random-Access Yes 3
4178(i) NAD Editorial 24.3.1 [iterator.requirements.general] writable is no longer a term of power Yes
4080(i) New 24.3.2 [iterator.assoc.types] Presumed value and difference types of an iterator type in ranges and non-ranges algorithms No 3
3838(i) New 24.3.2.1 [incrementable.traits] The last specialization of incrementable_traits is under-constrained Yes 3
3615(i) New 24.3.2.1 [incrementable.traits] The last specialization of incrementable_traits has wrong operand types Yes 3
3446(i) C++23 24.3.2.2 [readable.traits] indirectly_readable_traits ambiguity for types with both value_type and element_type Yes 2
3541(i) C++23 24.3.2.2 [readable.traits] indirectly_readable_traits should be SFINAE-friendly for all types Yes
3287(i) New 24.3.2.3 [iterator.traits] Exposition-only cpp17-input-iterator concept is needlessly complex Yes 3
3420(i) C++23 24.3.2.3 [iterator.traits] cpp17-iterator should check that the type looks like an iterator first Yes 0
3798(i) C++23 24.3.2.3 [iterator.traits] Rvalue reference and iterator_category Yes
2952(i) C++20 24.3.2.3 [iterator.traits] iterator_traits should work for pointers to cv T Yes 0
445(i) CD1 24.3.2.3 [iterator.traits] iterator_traits::reference unspecified for some iterator categories Yes
3283(i) Resolved 24.3.2.3 [iterator.traits] Types satisfying input_iterator but not equality_comparable look like C++17 output iterators Yes 2
3289(i) Resolved 24.3.2.3 [iterator.traits] Cannot opt out of C++17 iterator-ness without also opting out of C++20 iterator-ness Yes 2
2951(i) Resolved 24.3.2.3 [iterator.traits] iterator_traits should SFINAE for void* and function pointers Yes 3
1127(i) NAD Concepts 24.3.2.3 [iterator.traits] rvalue references and iterator traits Yes
3247(i) C++20 24.3.3.1 [iterator.cust.move] ranges::iter_move should perform ADL-only lookup of iter_move Yes 2
3299(i) C++20 24.3.3.1 [iterator.cust.move] Pointers don't need customized iterator behavior Yes 0
765(i) C++11 24.3.4 [iterator.concepts] More on iterator validity Yes
198(i) CD1 24.3.4 [iterator.concepts] Validity of pointers and references unspecified after iterator destruction Yes
346(i) CD1 24.3.4 [iterator.concepts] Some iterator member functions should be const Yes
407(i) CD1 24.3.4 [iterator.concepts] Can singular iterators be destroyed? Yes
208(i) TC1 24.3.4 [iterator.concepts] Unnecessary restriction on past-the-end iterators Yes
304(i) NAD 24.3.4 [iterator.concepts] Must *a return an lvalue when a is an input iterator? Yes
3279(i) Resolved 24.3.4.2 [iterator.concept.readable] shared_ptr<int>& does not not satisfy readable Yes 1
3890(i) New 24.3.4.4 [iterator.concept.winc] ABI issue for integer-class types Yes 3
3467(i) C++23 24.3.4.4 [iterator.concept.winc] bool can't be an integer-like type Yes 0
3367(i) C++20 24.3.4.4 [iterator.concept.winc] Integer-class conversions should not throw Yes 0
3366(i) Resolved 24.3.4.4 [iterator.concept.winc] Narrowing conversions between integer and integer-class types Yes 3
3376(i) Resolved 24.3.4.4 [iterator.concept.winc] "integer-like class type" is too restrictive Yes 3
3575(i) Resolved 24.3.4.4 [iterator.concept.winc] <=> for integer-class types isn't consistently specified Yes 3
3183(i) C++20 24.3.4.8 [iterator.concept.sizedsentinel] Normative permission to specialize Ranges variable templates Yes 0
3716(i) New 24.3.4.11 [iterator.concept.forward] §[iterator.concept.forward][forward.iterators] Two different definitions of multi-pass guarantee No 3
3277(i) C++20 24.3.4.13 [iterator.concept.random.access] Pre-increment on prvalues is not a requirement of weakly_incrementable Yes 0
3284(i) C++20 24.3.4.13 [iterator.concept.random.access] random_access_iterator semantic constraints accidentally promote difference type using unary negate Yes 0
4170(i) WP 24.3.4.14 [iterator.concept.contiguous] contiguous_iterator should require to_address(I{}) Yes
3607(i) C++23 24.3.4.14 [iterator.concept.contiguous] contiguous_iterator should not be allowed to have custom iter_move and iter_swap behavior Yes
2437(i) C++17 24.3.5.2 [iterator.iterators] iterator_traits<OutIt>::reference can and can't be void Yes 3
1009(i) NAD 24.3.5.2 [iterator.iterators] InputIterator post-increment dangerous Yes
484(i) Open 24.3.5.3 [input.iterators] Convertible to T No 3
2962(i) Open 24.3.5.3 [input.iterators] Iterators of Containers of move-only types do not model InputIterator Yes 2
98(i) CD1 24.3.5.3 [input.iterators] Input iterator requirements are badly written Yes
558(i) NAD Editorial 24.3.5.3 [input.iterators] lib.input.iterators Defect Yes
392(i) NAD 24.3.5.3 [input.iterators] 'equivalence' for input iterators Yes
493(i) NAD 24.3.5.3 [input.iterators] Undefined Expression in Input Iterator Note Title Yes
2035(i) Open 24.3.5.4 [output.iterators] Output iterator requirements are broken Yes 3
2038(i) Open 24.3.5.4 [output.iterators] Missing definition for incrementable iterator No 3
324(i) CD1 24.3.5.4 [output.iterators] Do output iterators have value types? Yes
485(i) Resolved 24.3.5.4 [output.iterators] output iterator insufficiently constrained Yes
200(i) CD1 24.3.5.5 [forward.iterators] Forward iterator requirements don't allow constant iterators Yes
478(i) CD1 24.3.5.5 [forward.iterators] Should forward iterator requirements table have a line for r->m? Yes 477
1311(i) Resolved 24.3.5.5 [forward.iterators] multi-pass property of Forward Iterator underspecified Yes
476(i) NAD 24.3.5.5 [forward.iterators] Forward Iterator implied mutability Yes
477(i) Dup 24.3.5.5 [forward.iterators] Operator-> for const forward iterators Yes 478
1084(i) NAD Concepts 24.3.5.5 [forward.iterators] Concept ForwardIterator should provide default implementation for post-increment Yes
383(i) CD1 24.3.5.6 [bidirectional.iterators] Bidirectional iterator assertion typo Yes
299(i) NAD Editorial 24.3.5.6 [bidirectional.iterators] Incorrect return types for iterator dereference Yes
1085(i) NAD Concepts 24.3.5.6 [bidirectional.iterators] BidirectionalIterator concept should provide default implementation for post-decrement Yes
3236(i) C++23 24.3.5.7 [random.access.iterators] Random access iterator requirements lack limiting relational operators domain to comparing those from the same range Yes 3
2519(i) C++17 24.3.5.7 [random.access.iterators] Iterator operator-= has gratuitous undefined behaviour Yes 2
1079(i) C++11 24.3.5.7 [random.access.iterators] UK-265: RandomAccessIterator's operator- has nonsensical effects clause Yes
448(i) CD1 24.3.5.7 [random.access.iterators] Random Access Iterators over abstract classes Yes
458(i) NAD 24.3.5.7 [random.access.iterators] 24.1.5 contains unintended limitation for operator- Yes
1010(i) NAD Concepts 24.3.5.7 [random.access.iterators] operator-= should use default in concept Yes
4171(i) New 24.3.6.3 [indirectcallable.indirectinvocable] P2609R3 breaks code that uses views::zip and get<T> No
3859(i) Resolved 24.3.6.4 [projected] std::projected cannot handle proxy iterator Yes 3
3996(i) NAD 24.3.6.4 [projected] projected<I, identity> should just be I Yes
3197(i) New 24.4.3 [iterator.operations] std::prev should not require BidirectionalIterator Yes 3
4055(i) New 24.4.3 [iterator.operations] §[iterator.operations] std::distance is missing a precondition Yes 4
3439(i) New 24.4.3 [iterator.operations] "Distance" template parameter is underspecified No 3
3344(i) New 24.4.3 [iterator.operations] advance(i, most-negative) and prev(i, most-negative) Yes 3
2931(i) Open 24.4.3 [iterator.operations] Missed optimization opportunity with single-argument std::next No 3
2353(i) C++17 24.4.3 [iterator.operations] std::next is over-constrained Yes 4
1011(i) C++11 24.4.3 [iterator.operations] next/prev wrong iterator type Yes
940(i) Resolved 24.4.3 [iterator.operations] std::distance Yes
204(i) NAD 24.4.3 [iterator.operations] distance(first, last) when "last" is before "first" Yes
3306(i) C++23 24.4.4.2 [range.iter.op.advance] ranges::advance violates its preconditions Yes 2
3453(i) C++23 24.4.4.2 [range.iter.op.advance] Generic code cannot call ranges::advance(i, s) Yes 2
3392(i) C++23 24.4.4.3 [range.iter.op.distance] ranges::distance() cannot be used on a move-only iterator with a sized sentinel Yes 3
3664(i) C++23 24.4.4.3 [range.iter.op.distance] LWG 3392 broke std::ranges::distance(a, a+3) Yes 2
2858(i) New 24.5.1 [reverse.iterators] LWG 2472: actually an incompatibility with C++03 Yes 4
2285(i) C++14 24.5.1 [reverse.iterators] make_reverse_iterator Yes
280(i) CD1 24.5.1 [reverse.iterators] Comparison of reverse_iterator to const reverse_iterator Yes
2208(i) Resolved 24.5.1 [reverse.iterators] std::reverse_iterator should be a literal type Yes 3
3623(i) New 24.5.1.1 [reverse.iterators.general] Uses of std::reverse_iterator with containers should not require manually including <iterator> Yes 3
2595(i) New 24.5.1.2 [reverse.iterator] reverse_iterator::operator[]'s return type revisited Yes 3
2360(i) C++14 24.5.1.2 [reverse.iterator] reverse_iterator::operator*() is unimplementable Yes 1
235(i) CD1 24.5.1.2 [reverse.iterator] No specification of default ctor for reverse_iterator Yes
3602(i) New 24.5.1.4 [reverse.iter.cons] reverse_iterator's converting assignment is overconstrained Yes 3
1012(i) C++11 24.5.1.4 [reverse.iter.cons] reverse_iterator default ctor should value initialize Yes
3725(i) New 24.5.1.6 [reverse.iter.elem] reverse_iterator::operator-> should not use prev for non-pointer iterators Yes 3
2188(i) C++14 24.5.1.6 [reverse.iter.elem] Reverse iterator does not fully support targets that overload operator& Yes 1
386(i) CD1 24.5.1.6 [reverse.iter.elem] Reverse iterator's operator[] has impossible return type Yes
1052(i) Resolved 24.5.1.6 [reverse.iter.elem] reverse_iterator::operator-> should also support smart pointers Yes 2775
3726(i) NAD 24.5.1.6 [reverse.iter.elem] reverse_iterator::operator-> is underconstrained for non-pointer iterators Yes
3727(i) NAD 24.5.1.6 [reverse.iter.elem] reverse_iterator/common_iterator's operator-> should not require the underlying iterator's operator-> to be a const member function Yes
1051(i) NAD 24.5.1.6 [reverse.iter.elem] Specify subscript operation return types of reverse_iterator and move_iterator Yes
2204(i) NAD 24.5.1.6 [reverse.iter.elem] reverse_iterator should not require a second copy of the base iterator Yes
2347(i) NAD 24.5.1.6 [reverse.iter.elem] reverse_iterator::operator[] calls const version of current[] Yes 2
2775(i) Dup 24.5.1.6 [reverse.iter.elem] reverse_iterator is does not compile for fancy pointers Yes 1052
99(i) NAD 24.5.1.8 [reverse.iter.cmp] Reverse_iterator comparisons completely wrong Yes
685(i) CD1 24.5.1.9 [reverse.iter.nonmember] reverse_iterator/move_iterator difference has invalid signatures Yes
2916(i) NAD 24.5.2 [insert.iterators] Insert iterators should each have an instantiation guide to initialize from a container Yes
100(i) NAD 24.5.2 [insert.iterators] Insert iterators/ostream_iterators overconstrained Yes
977(i) NAD 24.5.2 [insert.iterators] insert iterators inefficient for expensive to move types Yes
1062(i) NAD 24.5.2 [insert.iterators] Missing insert_iterator for stacks/queues Yes
3415(i) NAD 24.5.2.2 [back.insert.iterator] back_insert_iterator fails when a container is also its value type Yes
903(i) NAD 24.5.2.2 [back.insert.iterator] back_insert_iterator issue Yes
2324(i) C++14 24.5.2.2.2 [back.insert.iter.ops] Insert iterator constructors should use addressof() Yes 0
1334(i) C++11 24.5.2.2.2 [back.insert.iter.ops] Insert iterators are broken for some proxy containers compared to C++03 Yes
901(i) NAD 24.5.2.4 [insert.iterator] insert iterators can move from lvalues Yes
561(i) CD1 24.5.2.4.3 [inserter] inserter overly generic Yes
4104(i) New 24.5.3 [const.iterators] basic_const_iterator<volatile int*> is not a contiguous_iterator No 4
3986(i) New 24.5.3 [const.iterators] basic_const_iterator doesn't work with optional No 3
3988(i) Open 24.5.3 [const.iterators] Should as_const_view and basic_const_iterator provide base()? Yes 3
3769(i) C++23 24.5.3 [const.iterators] basic_const_iterator::operator== causes infinite constraint recursion Yes 1
3853(i) C++23 24.5.3 [const.iterators] basic_const_iterator<volatile int*>::operator-> is ill-formed Yes
3872(i) C++23 24.5.3 [const.iterators] basic_const_iterator should have custom iter_move Yes 3
3863(i) New 24.5.3.2 [const.iterators.alias] Is input_iterator guaranteed to have iter_const_reference_t? No 2
3858(i) NAD 24.5.3.4 [const.iterators.types] basic_const_iterator is too strict to provide iterator_category Yes
3391(i) C++23 24.5.4 [move.iterators] Problems with counted_iterator/move_iterator::base() const & Yes 2
3593(i) C++23 24.5.4 [move.iterators] Several iterators' base() const & and lazy_split_view::outer-iterator::value_type::end() missing noexcept Yes
2106(i) C++17 24.5.4 [move.iterators] move_iterator wrapping iterators returning prvalues Yes 3
979(i) NAD Editorial 24.5.4 [move.iterators] Bad example Yes
4120(i) New 24.5.4.2 [move.iterator] move_iterator should provide iterator_category only when it models forward_iterator Yes 3
4125(i) New 24.5.4.2 [move.iterator] move_iterator's default constructor should be constrained Yes 3
680(i) CD1 24.5.4.2 [move.iterator] move_iterator operator-> return Yes
1211(i) Resolved 24.5.4.2 [move.iterator] Move iterators should be restricted as input iterators Yes
3265(i) C++23 24.5.4.4 [move.iter.cons] move_iterator's conversions are more broken after P1207 Yes 2
3435(i) C++23 24.5.4.4 [move.iter.cons] three_way_comparable_with<reverse_iterator<int*>, reverse_iterator<const int*>> Yes 2
4115(i) New 24.5.4.6 [move.iter.elem] move_iterator::operator* should have conditional noexcept specification Yes 4
872(i) C++11 24.5.4.6 [move.iter.elem] move_iterator::operator[] has wrong return type Yes
3293(i) C++23 24.5.4.9 [move.iter.nonmember] move_iterator operator+() has incorrect constraints Yes 3
3390(i) C++20 24.5.4.9 [move.iter.nonmember] make_move_iterator() cannot be used to construct a move_iterator for a move-only iterator Yes 0
3749(i) WP 24.5.5 [iterators.common] common_iterator should handle integer-class difference types Yes 2
4092(i) New 24.5.5.1 [common.iterator] The monotonic version of common_iterator::operator== is underconstrained Yes 3
3783(i) New 24.5.5.1 [common.iterator] views::common may not be a range adaptor object Yes 3
3574(i) C++23 24.5.5.1 [common.iterator] common_iterator should be completely constexpr-able Yes 3
3385(i) C++20 24.5.5.1 [common.iterator] common_iterator is not sufficiently constrained for non-copyable iterators Yes 0
3660(i) C++23 24.5.5.2 [common.iter.types] iterator_traits<common_iterator>::pointer should conform to §[iterator.traits] Yes
3595(i) C++23 24.5.5.4 [common.iter.access] Exposition-only classes proxy and postfix-proxy for common_iterator should be fully constexpr Yes
3672(i) C++23 24.5.5.4 [common.iter.access] common_iterator::operator->() should return by value Yes
3546(i) C++23 24.5.5.5 [common.iter.nav] common_iterator's postfix-proxy is not quite right Yes
3601(i) C++23 24.5.5.5 [common.iter.nav] common_iterator's postfix-proxy needs indirectly_readable Yes
3748(i) New 24.5.5.6 [common.iter.cmp] common_iterator and counted_iterator' operator- are missing cast to return type Yes 3
3953(i) WP 24.5.5.7 [common.iter.cust] iter_move for common_iterator and counted_iterator should return decltype(auto) Yes
3472(i) C++23 24.5.7 [iterators.counted] counted_iterator is missing preconditions Yes
3543(i) C++23 24.5.7.1 [counted.iterator] Definition of when counted_iterators refer to the same sequence isn't quite right Yes
3408(i) Resolved 24.5.7.1 [counted.iterator] LWG 3291 reveals deficiencies in counted_iterator Yes 2
3389(i) C++20 24.5.7.2 [counted.iter.const] A move-only iterator still does not have a counted_iterator Yes 0
3643(i) C++23 24.5.7.5 [counted.iter.nav] Missing constexpr in std::counted_iterator Yes
2576(i) C++17 24.6 [stream.iterators] istream_iterator and ostream_iterator should use std::addressof Yes 0
1086(i) NAD Concepts 24.6 [stream.iterators] Stream iterators need to be concept-constrained templates Yes
788(i) C++11 24.6.2 [istream.iterator] Ambiguity in [istream.iterator] Yes
838(i) C++11 24.6.2 [istream.iterator] Can an end-of-stream iterator become a non-end-of-stream one? Yes
245(i) NAD 24.6.2 [istream.iterator] Which operations on istream_iterator trigger input operations? Yes
3600(i) C++23 24.6.2.2 [istream.iterator.cons] Making istream_iterator copy constructor trivial is an ABI break Yes 3
2793(i) C++17 24.6.2.2 [istream.iterator.cons] Awkward conflation of trivial special members of istream_iterator Yes
2878(i) C++17 24.6.2.2 [istream.iterator.cons] Missing DefaultConstructible requirement for istream_iterator default constructor Yes
2804(i) C++17 24.6.2.2 [istream.iterator.cons] Unconditional constexpr default constructor for istream_iterator Yes 0
1280(i) C++11 24.6.2.2 [istream.iterator.cons] Initialization of stream iterators Yes
1129(i) Resolved 24.6.2.2 [istream.iterator.cons] istream(buf)_iterator should support literal sentinel value Yes
260(i) CD1 24.6.2.3 [istream.iterator.ops] Inconsistent return type of istream_iterator::operator++(int) Yes
261(i) CD1 24.6.2.3 [istream.iterator.ops] Missing description of istream_iterator::operator!= Yes
349(i) CD1 24.6.3 [ostream.iterator] Minor typographical error in ostream_iterator Yes
1125(i) NAD 24.6.3.3 [ostream.iterator.ops] ostream_iterator does not work with movable types Yes
2366(i) New 24.6.4 [istreambuf.iterator] istreambuf_iterator end-of-stream equality Yes 3
3107(i) New 24.6.4 [istreambuf.iterator] istreambuf_iterator has public exposition-only member Yes 4
3188(i) New 24.6.4 [istreambuf.iterator] istreambuf_iterator::pointer should not be unspecified Yes 3
2790(i) C++17 24.6.4 [istreambuf.iterator] Missing specification of istreambuf_iterator::operator-> Yes 3
659(i) C++11 24.6.4 [istreambuf.iterator] istreambuf_iterator should have an operator->() Yes
110(i) TC1 24.6.4 [istreambuf.iterator] istreambuf_iterator::equal not const Yes
3108(i) New 24.6.4.2 [istreambuf.iterator.proxy] istreambuf_iterator::proxy::operator* should be const Yes 3
2544(i) C++17 24.6.4.3 [istreambuf.iterator.cons] istreambuf_iterator(basic_streambuf<charT, traits>* s) effects unclear when s is 0 Yes 3
1126(i) C++11 24.6.4.4 [istreambuf.iterator.ops] istreambuff_iterator::equal needs a const & parameter Yes
39(i) TC1 24.6.4.4 [istreambuf.iterator.ops] istreambuf_iterator<>::operator++(int) definition garbled Yes
111(i) NAD 24.6.4.4 [istreambuf.iterator.ops] istreambuf_iterator::equal overspecified, inefficient Yes
112(i) TC1 24.6.5.2 [ostreambuf.iter.cons] Minor typo in ostreambuf_iterator constructor Yes
4131(i) New 24.7 [iterator.range] Including <optional> doesn't provide std::begin/end Yes 3
3537(i) New 24.7 [iterator.range] §[iterator.range] Missing noexcept for std::rbegin/rend for arrays and initializer_list No 3
3987(i) WP 24.7 [iterator.range] Including <flat_foo> doesn't provide std::begin/end Yes
3009(i) C++20 24.7 [iterator.range] Including <string_view> doesn't provide std::size/empty/data Yes 0
3208(i) C++20 24.7 [iterator.range] Boolean's expression requirements are ordered inconsistently Yes 0
3300(i) C++20 24.7 [iterator.range] Non-array ssize overload is underconstrained Yes 3
2812(i) C++17 24.7 [iterator.range] Range access is available with <string_view> Yes 0
2280(i) C++14 24.7 [iterator.range] begin/end for arrays should be constexpr and noexcept Yes
2457(i) NAD 24.7 [iterator.range] std::begin() and std::end() do not support multi-dimensional arrays correctly Yes 3
3207(i) NAD 24.7 [iterator.range] N in ssize(const T (&)[N]) should be size_t Yes

Section 25 (229 issues)

(view only non-Ready open issues)

Issue Status Section Title Proposed Resolution Priority Duplicates
3729(i) New 25.2 [ranges.syn] std::tuple_element_t<std::ranges::subrange<I, S, K>> should remove top-level cv-qualifiers Yes 4
4027(i) WP 25.2 [ranges.syn] possibly-const-range should prefer returning const R& Yes 2
3914(i) WP 25.2 [ranges.syn] Inconsistent template-head of ranges::enumerate_view Yes
3946(i) WP 25.2 [ranges.syn] The definition of const_iterator_t should be reworked Yes
3948(i) WP 25.2 [ranges.syn] possibly-const-range and as-const-pointer should be noexcept Yes
3770(i) C++23 25.2 [ranges.syn] const_sentinel_t is missing Yes 3
3860(i) C++23 25.2 [ranges.syn] range_common_reference_t is missing Yes
3302(i) C++20 25.2 [ranges.syn] Range adaptor objects keys and values are unspecified Yes 1
3335(i) C++20 25.2 [ranges.syn] Resolve C++20 NB comments US 273 and GB 274 Yes 1
3351(i) C++20 25.2 [ranges.syn] ranges::enable_safe_range should not be constrained Yes 0
3379(i) C++20 25.2 [ranges.syn] "safe" in several library names is misleading Yes 1
3398(i) C++20 25.2 [ranges.syn] tuple_element_t is also wrong for const subrange Yes 0
3913(i) NAD 25.2 [ranges.syn] ranges::const_iterator_t<range R> fails to accept arrays of unknown bound Yes 3
3768(i) NAD 25.2 [ranges.syn] possibly-const-range is overconstrained Yes
3258(i) Resolved 25.3.2 [range.access.begin] Range access and initializer_list Yes 3
3333(i) NAD 25.3.4 [range.access.cbegin] ranges::cbegin/ranges::cend, (and maybe ranges::crbegin/ranges::crend) are under-specified to allow rvalue-arrays Yes
3368(i) Resolved 25.3.10 [range.prim.size] Exactly when does size return end - begin? Yes 0
3403(i) C++23 25.3.11 [range.prim.ssize] Domain of ranges::ssize(E) doesn't match ranges::size(E) Yes 2
4062(i) New 25.3.12 [range.prim.empty] ranges::empty has no semantic requirements for forward_ranges No
3915(i) WP 25.4.2 [range.range] Redundant paragraph about expression variations Yes
3361(i) C++23 25.4.2 [range.range] safe_range<SomeRange&> case Yes 3
3559(i) C++23 25.4.3 [range.sized] Semantic requirements of sized_range is circular Yes
3264(i) C++20 25.4.3 [range.sized] sized_range and ranges::size redundantly use disable_sized_range Yes 1
3982(i) Tentatively NAD 25.4.4 [range.view] is-derived-from-view-interface should require that T is derived from view_interface<T> Yes
3326(i) C++20 25.4.4 [range.view] enable_view has false positives Yes 0
3452(i) Resolved 25.4.4 [range.view] Are views really supposed to have strict 𝒪(1) destruction? Yes 2
3896(i) New 25.4.5 [range.refinements] The definition of viewable_range is not quite right Yes 4
3481(i) C++23 25.4.5 [range.refinements] viewable_range mishandles lvalue move-only views Yes 2
3375(i) C++20 25.4.5 [range.refinements] decay in viewable_range should be remove_cvref Yes 0
3381(i) C++20 25.4.5 [range.refinements] begin and data must agree for contiguous_range Yes 0
4112(i) WP 25.5.2 [range.utility.helpers] has-arrow should required operator->() to be const-qualified Yes
4003(i) Tentatively NAD 25.5.3 [view.interface] view_interface::back is overconstrained Yes
3549(i) C++23 25.5.3 [view.interface] view_interface is overspecified to derive from view_base Yes 2
3646(i) C++23 25.5.3.1 [view.interface.general] std::ranges::view_interface::size returns a signed type Yes 3
3715(i) C++23 25.5.3.1 [view.interface.general] view_interface::empty is overconstrained Yes
3766(i) C++23 25.5.3.1 [view.interface.general] view_interface::cbegin is underconstrained Yes 2
3404(i) C++23 25.5.4 [range.subrange] Finish removing subrange's conversions from pair-like Yes 0
3470(i) C++23 25.5.4 [range.subrange] convertible-to-non-slicing seems to reject valid case Yes 3
3589(i) C++23 25.5.4 [range.subrange] The const lvalue reference overload of get for subrange does not constrain I to be copyable when N == 0 Yes 3
3281(i) C++20 25.5.4 [range.subrange] Conversion from pair-like types to subrange is a silent semantic promotion Yes 1
3282(i) C++20 25.5.4 [range.subrange] subrange converting constructor should disallow derived to base conversions Yes 1
3179(i) C++20 25.5.4.2 [range.subrange.ctor] subrange should always model Range Yes 0
4010(i) New 25.5.4.3 [range.subrange.access] subrange::advance should be improved Yes 3
3433(i) C++23 25.5.4.3 [range.subrange.access] subrange::advance(n) has UB when n < 0 Yes 2
3551(i) C++23 25.5.5 [range.dangling] borrowed_{iterator,subrange}_t are overspecified Yes
4016(i) WP 25.5.7 [range.utility.conv] container-insertable checks do not match what container-inserter does Yes
4121(i) New 25.5.7.1 [range.utility.conv.general] ranges::to constructs associative containers via c.emplace(c.end(), *it) Yes 2
3958(i) Tentatively NAD 25.5.7.2 [range.utility.conv.to] ranges::to should prioritize the "reserve" branch Yes
4066(i) New 25.5.7.2 [range.utility.conv.to] ranges::to should reserve when sized_sentinel_for is satisfied Yes
4008(i) New 25.5.7.2 [range.utility.conv.to] §[range.utility.conv.to] ranges::to may cause infinite recursion if range_value_t<C> is a non-move-constructible range Yes 3
4018(i) New 25.5.7.2 [range.utility.conv.to] ranges::to's copy branch is underconstrained Yes 3
3722(i) New 25.5.7.2 [range.utility.conv.to] ranges::to reserves the wrong size Yes 4
3845(i) New 25.5.7.2 [range.utility.conv.to] ranges::to's from_range_t tag branch has the wrong constraint Yes 4
3985(i) New 25.5.7.2 [range.utility.conv.to] ranges::to should Mandates C not to be view Yes 3
3984(i) WP 25.5.7.2 [range.utility.conv.to] ranges::to's recursion branch may be ill-formed Yes 3
3733(i) C++23 25.5.7.2 [range.utility.conv.to] ranges::to misuses cpp17-input-iterator Yes 2
3743(i) C++23 25.5.7.2 [range.utility.conv.to] ranges::to's reserve may be ill-formed Yes
3785(i) C++23 25.5.7.2 [range.utility.conv.to] ranges::to is over-constrained on the destination type being a range Yes
3847(i) C++23 25.5.7.2 [range.utility.conv.to] ranges::to can still return views Yes 2
3787(i) Resolved 25.5.7.2 [range.utility.conv.to] ranges::to's template parameter C should not be a reference type Yes 3
3983(i) New 25.5.7.3 [range.utility.conv.adaptors] ranges::to adaptors are underconstrained Yes 3
3907(i) New 25.6 [range.factories] Can iterator types of range adaptors and range factories be SCARY? No 3
4035(i) WP 25.6.3.2 [range.single.view] single_view should provide empty Yes
3428(i) C++23 25.6.3.2 [range.single.view] single_view's in place constructor should be explicit Yes 0
4096(i) WP 25.6.4.1 [range.iota.overview] views::iota(views::iota(0)) should be rejected Yes
3614(i) New 25.6.4.2 [range.iota.view] iota_view::size and the most negative signed integer values Yes 3
4001(i) WP 25.6.4.2 [range.iota.view] iota_view should provide empty Yes
3523(i) C++23 25.6.4.2 [range.iota.view] iota_view::sentinel is not always iota_view's sentinel Yes
3597(i) C++23 25.6.4.2 [range.iota.view] Unsigned integer types don't model advanceable Yes 3
3610(i) C++23 25.6.4.2 [range.iota.view] iota_view::size sometimes rejects integer-class types Yes
3292(i) C++20 25.6.4.2 [range.iota.view] iota_view is under-constrained Yes
4002(i) New 25.6.4.3 [range.iota.iterator] The definition of iota_view::iterator::iterator_concept should be improved Yes 3
3846(i) New 25.6.4.3 [range.iota.iterator] iota_view::iterator::operator- is overconstrained Yes 3
3580(i) C++23 25.6.4.3 [range.iota.iterator] iota_view's iterator's binary operator+ should be improved Yes
3670(i) C++23 25.6.4.3 [range.iota.iterator] Cpp17InputIterators don't have integer-class difference types Yes
3291(i) C++20 25.6.4.3 [range.iota.iterator] iota_view::iterator has the wrong iterator_category Yes 0
3388(i) C++20 25.6.4.3 [range.iota.iterator] view iterator types have ill-formed <=> operators Yes 0
3609(i) New 25.6.4.4 [range.iota.sentinel] std::ranges::iota_view<int, long> has non-subtractable iterator and sentinel types Yes 3
3875(i) C++23 25.6.5 [range.repeat] std::ranges::repeat_view<T, IntegerClass>::iterator may be ill-formed Yes
4054(i) WP 25.6.5.1 [range.repeat.overview] Repeating a repeat_view should repeat the view Yes
3955(i) New 25.6.5.2 [range.repeat.view] Add noexcept to several repeat_view[::iterator] member functions Yes 3
4053(i) WP 25.6.5.2 [range.repeat.view] Unary call to std::views::repeat does not decay the argument Yes
3772(i) C++23 25.6.5.2 [range.repeat.view] repeat_view's piecewise constructor is missing Postconditions Yes 2
3796(i) C++23 25.6.5.2 [range.repeat.view] movable-box as member should use default-initialization instead of copy-initialization Yes
3763(i) New 25.6.5.3 [range.repeat.iterator] Should range adaptor iterators only provide iterator_category when its difference_type is not an integer-class type? Yes 3
3679(i) LEWG 25.6.6 [range.istream] Is <ranges> sufficient for istream_view? No 3
3568(i) C++23 25.6.6.2 [range.istream.view] basic_istream_view needs to initialize value_ Yes
3489(i) New 25.6.6.3 [range.istream.iterator] Improve istream_view wording Yes 3
3397(i) C++20 25.6.6.3 [range.istream.iterator] ranges::basic_istream_view::iterator should not provide iterator_category Yes 1
3394(i) NAD 25.6.6.3 [range.istream.iterator] ranges::basic_istream_view::iterator has an empty iterator_traits Yes 2
3524(i) Resolved 25.7 [range.adaptors] Unimplementable narrowing and evaluation order requirements for range adaptors Yes 3
3981(i) Tentatively NAD 25.7.2 [range.adaptor.object] Range adaptor closure object is underspecified for its return type Yes
3994(i) New 25.7.2 [range.adaptor.object] adaptor(args...)(r) is not equivalent to std::bind_back(adaptor, args...)(r) No 4
3509(i) Resolved 25.7.2 [range.adaptor.object] Range adaptor objects are underspecified Yes 2
3477(i) C++23 25.7.3 [range.move.wrap] Simplify constraints for semiregular-box Yes 0
3572(i) C++23 25.7.3 [range.move.wrap] copyable-box should be fully constexpr Yes
3479(i) Resolved 25.7.3 [range.move.wrap] semiregular-box mishandles self-assignment Yes 3
3173(i) C++20 25.7.6.2 [range.ref.view] Enable CTAD for ref-view Yes 0
4099(i) New 25.7.7.1 [range.as.rvalue.overview] The simple case of views::as_rvalue and views::common are not strictly correct Yes 4
4083(i) WP 25.7.7.1 [range.as.rvalue.overview] views::as_rvalue should reject non-input ranges Yes
3829(i) New 25.7.7.2 [range.as.rvalue.view] as_rvalue_view::end should improve non-common case Yes 3
3280(i) C++20 25.7.8.2 [range.filter.view] View converting constructors can cause constraint recursion and are unneeded Yes 1
3533(i) C++23 25.7.8.3 [range.filter.iterator] Make base() const & consistent across iterator wrappers that supports input_iterators Yes
3325(i) C++20 25.7.9.2 [range.transform.view] Constrain return type of transformation function for transform_view Yes 0
3483(i) C++23 25.7.9.3 [range.transform.iterator] transform_view::iterator's difference is overconstrained Yes 0
3520(i) C++23 25.7.9.3 [range.transform.iterator] iter_move and iter_swap are inconsistent for transform_view::iterator Yes 2
3555(i) C++23 25.7.9.3 [range.transform.iterator] {transform,elements}_view::iterator::iterator_concept should consider const-qualification of the underlying range Yes
3564(i) C++23 25.7.9.3 [range.transform.iterator] transform_view::iterator<true>::value_type and iterator_category should use const F& Yes 2
3618(i) C++23 25.7.9.3 [range.transform.iterator] Unnecessary iter_move for transform_view::iterator Yes
3301(i) C++20 25.7.9.3 [range.transform.iterator] transform_view::iterator has incorrect iterator_category Yes 1
3448(i) C++23 25.7.9.4 [range.transform.sentinel] transform_view's sentinel<false> not comparable with iterator<true> Yes 1
3384(i) C++20 25.7.9.4 [range.transform.sentinel] transform_view::sentinel has an incorrect operator- Yes 0
4050(i) New 25.7.10.1 [range.take.overview] Should views::iota(0) | views::take(5) be views::iota(0, 5)? Yes
3407(i) C++23 25.7.10.1 [range.take.overview] Some problems with the wording changes of P1739R4 Yes 2
3447(i) C++23 25.7.10.2 [range.take.view] Deduction guides for take_view and drop_view have different constraints Yes 0
3738(i) C++23 25.7.10.2 [range.take.view] Missing preconditions for take_view constructor Yes
3286(i) C++20 25.7.10.2 [range.take.view] ranges::size is not required to be valid after a call to ranges::begin on an input range Yes 0
3449(i) C++23 25.7.10.3 [range.take.sentinel] take_view and take_while_view's sentinel<false> not comparable with their const iterator Yes 1
3737(i) C++23 25.7.10.3 [range.take.sentinel] take_view::sentinel should provide operator- Yes 3
3450(i) C++23 25.7.11.2 [range.take.while.view] The const overloads of take_while_view::begin/end are underconstrained Yes 0
3364(i) C++20 25.7.11.2 [range.take.while.view] Initialize data members of ranges and their iterators Yes 0
3298(i) NAD 25.7.11.2 [range.take.while.view] Range adaptors introduced by P1035 do not require viewable_range Yes
3708(i) C++23 25.7.11.3 [range.take.while.sentinel] take_while_view::sentinel's conversion constructor should move Yes
4009(i) New 25.7.12.2 [range.drop.view] drop_view::begin const may have 𝒪(n) complexity Yes
3730(i) New 25.7.12.2 [range.drop.view] std::ranges::drop_view may have different size type from its underlying view Yes 3
3482(i) C++23 25.7.12.2 [range.drop.view] drop_view's const begin should additionally require sized_range Yes 0
3490(i) C++23 25.7.13.2 [range.drop.while.view] ranges::drop_while_view::begin() is missing a precondition Yes 0
3363(i) C++20 25.7.13.2 [range.drop.while.view] drop_while_view should opt-out of sized_range Yes 1
3666(i) New 25.7.14 [range.join] join_view's difference type is too small No 2
3474(i) C++23 25.7.14 [range.join] Nesting join_views is broken because of CTAD Yes
3700(i) Resolved 25.7.14.2 [range.join.view] The const begin of the join_view family does not require InnerRng to be a range Yes 3
3322(i) Resolved 25.7.14.2 [range.join.view] Add join_view::base() member function Yes 0
3278(i) Resolved 25.7.14.2 [range.join.view] join_view<V>::iterator<true> tries to write through const join_view ptr Yes 2
3500(i) C++23 25.7.14.3 [range.join.iterator] join_view::iterator::operator->() is bogus Yes 0
3517(i) C++23 25.7.14.3 [range.join.iterator] join_view::iterator's iter_swap is underconstrained Yes
3535(i) C++23 25.7.14.3 [range.join.iterator] join_view::iterator::iterator_category and ::iterator_concept lie Yes 2
3569(i) C++23 25.7.14.3 [range.join.iterator] join_view fails to support ranges of ranges with non-default_initializable iterators Yes 3
3313(i) C++20 25.7.14.3 [range.join.iterator] join_view::iterator::operator-- is incorrectly constrained Yes 0
3791(i) Resolved 25.7.14.3 [range.join.iterator] join_view::iterator::operator-- may be ill-formed Yes 3
3365(i) NAD 25.7.14.3 [range.join.iterator] Rename ref-is-glvalue to deref-is-ref Yes 0
3873(i) New 25.7.15.2 [range.join.with.view] join_with_view's const begin is underconstrained No 3
4074(i) WP 25.7.15.2 [range.join.with.view] compatible-joinable-ranges is underconstrained Yes
3971(i) NAD 25.7.15.2 [range.join.with.view] Join ranges of rvalue references with ranges of prvalues Yes 3
4059(i) New 25.7.15.3 [range.join.with.iterator] Leaky abstraction in join_with_view's iterator Yes 3
3852(i) New 25.7.15.3 [range.join.with.iterator] join_with_view::iterator's iter_move and iter_swap should be conditionally noexcept Yes 3
3972(i) New 25.7.15.3 [range.join.with.iterator] Issues with join_with_view::iterator's iter_swap No 2
3855(i) New 25.7.16.2 [range.lazy.split.view] tiny-range is not quite right Yes 4
3685(i) New 25.7.16.2 [range.lazy.split.view] In lazy_split_view, CTAD doesn't work when given an input_range input and a tiny-range pattern Yes 3
3599(i) New 25.7.16.2 [range.lazy.split.view] The const overload of lazy_split_view::begin should be constrained by const Pattern Yes 3
4108(i) SG9 25.7.16.2 [range.lazy.split.view] lazy_split_view should be sized_range when pattern is empty tiny-range Yes 4
3592(i) C++23 25.7.16.2 [range.lazy.split.view] lazy_split_view needs to check the simpleness of Pattern Yes
3686(i) New 25.7.16.3 [range.lazy.split.outer] In lazy_split_view, comparing a default-constructed outer-iterator or inner-iterator with std::default_sentinel results in null pointer dereference Yes 3
3904(i) WP 25.7.16.3 [range.lazy.split.outer] lazy_split_view::outer-iterator's const-converting constructor isn't setting trailing_empty_ Yes
3505(i) C++23 25.7.16.3 [range.lazy.split.outer] split_view::outer-iterator::operator++ misspecified Yes 2
3181(i) NAD 25.7.16.3 [range.lazy.split.outer] split_view::outer_iterator converting constructor is misconstrained Yes
4013(i) WP 25.7.16.4 [range.lazy.split.outer.value] lazy_split_view::outer-iterator::value_type should not provide default constructor Yes
3553(i) C++23 25.7.16.4 [range.lazy.split.outer.value] Useless constraint in split_view::outer-iterator::value_type::begin() Yes
3276(i) C++20 25.7.16.4 [range.lazy.split.outer.value] Class split_view::outer_iterator::value_type should inherit from view_interface Yes 0
3532(i) C++23 25.7.16.5 [range.lazy.split.inner] split_view<V, P>::inner-iterator<true>::operator++(int) should depend on Base Yes
3591(i) C++23 25.7.16.5 [range.lazy.split.inner] lazy_split_view<input_view>::inner-iterator::base() && invalidates outer iterators Yes
3478(i) Resolved 25.7.17 [range.split] views::split drops trailing empty range Yes 2
3590(i) C++23 25.7.17.2 [range.split.view] split_view::base() const & is overconstrained Yes
4017(i) New 25.7.17.3 [range.split.iterator] Behavior of std::views::split on an empty range Yes 3
4082(i) WP 25.7.18.1 [range.concat.overview] views::concat(r) is well-formed when r is an output_range Yes
4166(i) New 25.7.18.2 [range.concat.view] concat_view::end() should be more constrained in order to support noncopyable iterators Yes
4073(i) New 25.7.18.2 [range.concat.view] concat_view::size may overflow No 4
4091(i) New 25.7.18.2 [range.concat.view] concat_view rejects non-movable references Yes 4
4081(i) New 25.7.18.3 [range.concat.iterator] concat_view::iterator::operator- is overconstrained Yes 3
4089(i) New 25.7.18.3 [range.concat.iterator] concat_view::iterator's iter_swap is overconstrained Yes 3
4079(i) WP 25.7.18.3 [range.concat.iterator] Missing Preconditions in concat_view::iterator's conversion constructor Yes
4012(i) WP 25.7.20.2 [range.common.view] common_view::begin/end are missing the simple-view check Yes
3405(i) C++23 25.7.20.2 [range.common.view] common_view's converting constructor is bad, too Yes 0
3717(i) C++23 25.7.20.2 [range.common.view] common_view::end should improve random_access_range case Yes 3
4019(i) SG9 25.7.21 [range.reverse] Reversing an infinite range leads to an infinite loop No 3
3494(i) C++23 25.7.21 [range.reverse] Allow ranges to be conditionally borrowed Yes
4097(i) LEWG 25.7.21.1 [range.reverse.overview] views::reverse should be specialized for some view types Yes 3
3830(i) New 25.7.21.2 [range.reverse.view] reverse_view should not cache when ranges::next has constant time complexity Yes 3
3387(i) C++20 25.7.21.2 [range.reverse.view] §[range.reverse.view] reverse_view<V> unintentionally requires range<const V> Yes 0
3811(i) C++23 25.7.22.1 [range.as.const.overview] views::as_const on ref_view<T> should return ref_view<const T> Yes
3850(i) C++23 25.7.22.1 [range.as.const.overview] views::as_const on empty_view<T> should return empty_view<const T> Yes
3386(i) C++20 25.7.23 [range.elements] elements_view needs its own sentinel type Yes 1
3563(i) C++23 25.7.23.1 [range.elements.overview] keys_view example is broken Yes 3
3797(i) New 25.7.23.2 [range.elements.view] elements_view insufficiently constrained Yes 2
3406(i) C++23 25.7.23.2 [range.elements.view] elements_view::begin() and elements_view::end() have incompatible constraints Yes 1
3323(i) C++20 25.7.23.2 [range.elements.view] has-tuple-element helper concept needs convertible_to Yes 0
4114(i) New 25.7.23.3 [range.elements.iterator] elements_view::iterator::operator* missing conditional noexcept specification Yes 3
3832(i) New 25.7.23.3 [range.elements.iterator] Missing change for element_view::iterator in LWG 3798 Yes 3
3492(i) C++23 25.7.23.3 [range.elements.iterator] Minimal improvements to elements_view::iterator Yes 0
3502(i) C++23 25.7.23.3 [range.elements.iterator] elements_view should not be allowed to return dangling references Yes 2
3377(i) C++20 25.7.23.3 [range.elements.iterator] elements_view::iterator befriends a specialization of itself Yes 0
3558(i) NAD Editorial 25.7.23.4 [range.elements.sentinel] elements_view::sentinel's first operator- has wrong return type Yes
3919(i) WP 25.7.24 [range.enumerate] enumerate_view may invoke UB for sized common non-forward underlying ranges Yes 3
3908(i) Tentatively NAD 25.7.24.3 [range.enumerate.iterator] enumerate_view::iterator constructor is explicit Yes
4116(i) New 25.7.24.3 [range.enumerate.iterator] enumerate_view::iterator and cartesian_product_view::iterator should not always provide iterator_category Yes
3912(i) WP 25.7.24.3 [range.enumerate.iterator] enumerate_view::iterator::operator- should be noexcept Yes
3864(i) New 25.7.25 [range.zip] zip over range of reference to an abstract type No 4
3731(i) New 25.7.25.2 [range.zip.view] zip_view and adjacent_view are underconstrained Yes 3
3755(i) C++23 25.7.25.2 [range.zip.view] tuple-for-each can call user-defined operator, Yes
3692(i) C++23 25.7.25.3 [range.zip.iterator] zip_view::iterator's operator<=> is overconstrained Yes
3773(i) C++23 25.7.26.1 [range.zip.transform.overview] views::zip_transform still requires F to be copy_constructible when empty pack Yes
3714(i) NAD 25.7.26.2 [range.zip.transform.view] Non-single-argument constructors for range adaptors should not be explicit Yes 4
3702(i) C++23 25.7.26.3 [range.zip.transform.iterator] Should zip_transform_view::iterator remove operator<? Yes
4098(i) WP 25.7.27.1 [range.adjacent.overview] views::adjacent<0> should reject non-forward ranges Yes
3735(i) NAD 25.7.27.1 [range.adjacent.overview] views::adjacent<0> should be prohibited Yes
3848(i) C++23 25.7.27.2 [range.adjacent.view] adjacent_view, adjacent_transform_view and slide_view missing base accessor Yes
3947(i) WP 25.7.28.2 [range.adjacent.transform.view] Unexpected constraints on adjacent_transform_view::base() Yes
3710(i) C++23 25.7.29.2 [range.chunk.view.input] The end of chunk_view for input ranges can be const Yes
3712(i) C++23 25.7.29.2 [range.chunk.view.input] chunk_view and slide_view should not be default_initializable Yes
3739(i) NAD 25.7.29.2 [range.chunk.view.input] chunk_view::size should preserve the signedness of the size of the underlying range Yes
4006(i) Tentatively NAD 25.7.29.4 [range.chunk.outer.value] chunk_view::outer-iterator::value_type should provide empty Yes
3707(i) C++23 25.7.29.4 [range.chunk.outer.value] chunk_view::outer-iterator::value_type::size should return unsigned type Yes
3851(i) C++23 25.7.29.5 [range.chunk.inner.iter] chunk_view::inner-iterator missing custom iter_move and iter_swap Yes
3880(i) C++23 25.7.29.7 [range.chunk.fwd.iter] Clarify operator+= complexity for {chunk,stride}_view::iterator Yes
3711(i) C++23 25.7.30.2 [range.slide.view] Missing preconditions for slide_view constructor Yes
3740(i) NAD 25.7.30.2 [range.slide.view] slide_view::size should preserve the signedness of underlying range's size Yes
3760(i) C++23 25.7.33 [range.cartesian] cartesian_product_view::iterator's parent_ is never valid Yes
3777(i) Open 25.7.33.2 [range.cartesian.view] Common cartesian_product_view produces an invalid range if the first range is input and one of the ranges is empty Yes 2
3761(i) C++23 25.7.33.3 [range.cartesian.iterator] cartesian_product_view::iterator::operator- should pass by reference Yes
3801(i) C++23 25.7.33.3 [range.cartesian.iterator] cartesian_product_view::iterator::distance-from ignores the size of last underlying range Yes
3820(i) C++23 25.7.33.3 [range.cartesian.iterator] cartesian_product_view::iterator::prev is not quite right Yes
3849(i) C++23 25.7.33.3 [range.cartesian.iterator] cartesian_product_view::iterator's default constructor is overconstrained Yes
3899(i) WP 25.8.5 [coro.generator.promise] co_yielding elements of an lvalue generator is unnecessarily inefficient Yes 3
3900(i) WP 25.8.5 [coro.generator.promise] The allocator_arg_t overloads of generator::promise_type::operator new should not be constrained Yes 3
4119(i) WP 25.8.5 [coro.generator.promise] generator::promise_type::yield_value(ranges::elements_of<R, Alloc>)'s nested generator may be ill-formed Yes
3894(i) WP 25.8.5 [coro.generator.promise] generator::promise_type::yield_value(ranges::elements_of<Rng, Alloc>) should not be noexcept Yes
3826(i) C++23 25.8.5 [coro.generator.promise] Redundant specification [for overload of yield_value] Yes
4057(i) New 25.8.6 [coro.generator.iterator] generator::iterator's operator* is not noexcept when it can be Yes 3
4117(i) New 25.8.6 [coro.generator.iterator] generator::iterator should provide iterator_concept Yes 4
3762(i) C++23 25.8.6 [coro.generator.iterator] generator::iterator::operator== should pass by reference Yes

Section 26 (194 issues)

(view only non-Ready open issues)

Issue Status Section Title Proposed Resolution Priority Duplicates
2963(i) New 26 [algorithms] Algorithms with underspecified iterator requirements No 3
1238(i) Open 26 [algorithms] Defining algorithms taking iterator for range No 3
2173(i) Open 26 [algorithms] The meaning of operator + in the description of the algorithms Yes 4
1205(i) C++11 26 [algorithms] Some algorithms could more clearly document their handling of empty ranges Yes
92(i) CD1 26 [algorithms] Incomplete Algorithm Requirements Yes
210(i) TC1 26 [algorithms] distance first and last confused Yes
2917(i) Resolved 26 [algorithms] Parallel algorithms cannot easily work with InputIterators Yes
1282(i) NAD 26 [algorithms] A proposal to add std::split algorithm Yes
1053(i) NAD 26 [algorithms] Unify algorithms with operator and function object variants Yes
631(i) NAD 26 [algorithms] conflicting requirements for BinaryPredicate Yes
2082(i) NAD 26 [algorithms] Misleading complexity requirements in <algorithm> Yes
2727(i) C++17 26.1 [algorithms.general] Parallel algorithms with constexpr specifier Yes 0
3049(i) Open 26.2 [algorithms.requirements] Missing wording allowing algorithms to use copies of function objects as substitutes for their parameters Yes 3
3419(i) C++23 26.2 [algorithms.requirements] §[algorithms.requirements]/15 doesn't reserve as many rights as it intends to Yes 0
2932(i) C++20 26.3.3 [algorithms.parallel.exec] Constraints on parallel algorithm implementations are underspecified Yes
2718(i) C++17 26.3.3 [algorithms.parallel.exec] Parallelism bug in [algorithms.parallel.exec] p2 Yes
2880(i) Resolved 26.3.3 [algorithms.parallel.exec] Relax complexity specifications for non-sequenced policies Yes
3062(i) C++20 26.3.5 [algorithms.parallel.overloads] Unnecessary decay_t in is_execution_policy_v should be remove_cvref_t Yes 0
2909(i) NAD 26.3.6.2 [execpol.type] User specializations of is_execution_policy should be ill-formed Yes
4095(i) Tentatively NAD 26.4 [algorithm.syn] ranges::fold_meow should explicitly spell out the return type Yes
3180(i) C++20 26.4 [algorithm.syn] Inconsistently named return type for ranges::minmax_element Yes 0
483(i) Dup 26.6 [alg.nonmodifying] Heterogeneous equality and EqualityComparable Yes 283
3793(i) New 26.6.5 [alg.foreach] Requirements for some algorithms' Size template parameters are unclear No 3
2747(i) C++17 26.6.5 [alg.foreach] Possibly redundant std::move in [alg.foreach] Yes 0
1110(i) C++11 26.6.5 [alg.foreach] Is for_each overconstrained? Yes
475(i) CD1 26.6.5 [alg.foreach] May the function object passed to for_each modify the elements of the iterated sequence? Yes
3213(i) Resolved 26.6.5 [alg.foreach] for_each_n and copy_n missing requirements for Size Yes 3
969(i) NAD Editorial 26.6.5 [alg.foreach] What happened to Library Issue 475? Yes
290(i) NAD 26.6.5 [alg.foreach] Requirements to for_each and its function object Yes
219(i) NAD 26.6.6 [alg.find] find algorithm missing version that takes a binary predicate argument Yes
244(i) NAD 26.6.6 [alg.find] Must find's third argument be CopyConstructible? Yes
2150(i) C++14 26.6.8 [alg.find.end] Unclear specification of find_end Yes
576(i) CD1 26.6.9 [alg.find.first.of] find_first_of is overconstrained Yes
150(i) TC1 26.6.9 [alg.find.first.of] Find_first_of says integer instead of iterator Yes
240(i) CD1 26.6.10 [alg.adjacent.find] Complexity of adjacent_find() is meaningless Yes
1000(i) NAD Concepts 26.6.10 [alg.adjacent.find] adjacent_find is over-constrained Yes
3560(i) C++23 26.6.13 [alg.equal] ranges::equal and ranges::is_permutation should short-circuit for sized_ranges Yes
2967(i) NAD 26.6.13 [alg.equal] std::equal on empty ranges Yes
1431(i) C++11 26.6.14 [alg.is.permutation] is_permutation must be more restrictive Yes
1338(i) C++11 26.6.15 [alg.search] LWG 1205 incorrectly applied Yes
426(i) CD1 26.6.15 [alg.search] search_n(), fill_n(), and generate_n() with negative n Yes
714(i) CD1 26.6.15 [alg.search] search_n complexity is too lax Yes
3596(i) NAD 26.6.16 [alg.starts.with] ranges::starts_with and ranges::ends_with are underspecified Yes
4105(i) WP 26.6.17 [alg.ends.with] ranges::ends_with's Returns misses difference casting Yes
4093(i) New 26.6.18 [alg.fold] ranges::fold_left_first_with_iter incorrectly constructs optional<U> Yes 3
4094(i) New 26.6.18 [alg.fold] ranges::fold_meow is overconstrained Yes 3
3969(i) New 26.6.18 [alg.fold] std::ranges::fold_left_first_with_iter should be more ADL-proof Yes 3
3779(i) NAD 26.6.18 [alg.fold] ranges::fold_* can unintentionally const_cast and reinterpret_cast Yes
3089(i) New 26.7.1 [alg.copy] copy_n should require non-overlapping ranges Yes 3
2471(i) Open 26.7.1 [alg.copy] copy_n's number of InputIterator increments unspecified No 3
2689(i) C++17 26.7.1 [alg.copy] Parallel versions of std::copy and std::move shouldn't be in order Yes 0
2039(i) C++14 26.7.1 [alg.copy] Issues with std::reverse and std::copy_if Yes
2242(i) NAD 26.7.1 [alg.copy] [uninitialized_]copy_n() defect Yes 2
1206(i) C++11 26.7.2 [alg.move] Incorrect requires for move_backward and copy_backward Yes
187(i) CD1 26.7.3 [alg.swap] iter_swap underspecified Yes
809(i) CD1 26.7.3 [alg.swap] std::swap should be overloaded for array types Yes
227(i) TC1 26.7.3 [alg.swap] std::swap() should require CopyConstructible or DefaultConstructible arguments Yes
912(i) NAD Concepts 26.7.3 [alg.swap] Array swap needs to be conceptualized Yes
242(i) CD1 26.7.4 [alg.transform] Side effects of function objects Yes
293(i) NAD 26.7.4 [alg.transform] Order of execution in transform algorithm Yes
3868(i) LEWG 26.7.5 [alg.replace] Constrained algorithms should not require output_iterator Yes 4
283(i) CD1 26.7.5 [alg.replace] std::replace() requirement incorrect/insufficient Yes 483
337(i) CD1 26.7.5 [alg.replace] replace_copy_if's template parameter should be InputIterator Yes
913(i) NAD Concepts 26.7.5 [alg.replace] Superfluous requirements for replace algorithms Yes
1087(i) NAD Concepts 26.7.5 [alg.replace] Incorrect OutputIterator concept requirements for replace algorithms Yes
865(i) C++11 26.7.6 [alg.fill] More algorithms that throw away information Yes
3186(i) C++20 26.7.8 [alg.remove] ranges removal, partition, and partial_sort_copy algorithms discard useful information Yes 1
2110(i) C++14 26.7.8 [alg.remove] remove can't swap but note says it might Yes
779(i) CD1 26.7.8 [alg.remove] Resolution of #283 incomplete Yes
367(i) NAD 26.7.8 [alg.remove] remove_copy/remove_copy_if and Input Iterators Yes
489(i) NAD 26.7.8 [alg.remove] std::remove / std::remove_if wrongly specified Yes
4103(i) New 26.7.9 [alg.unique] ranges::unique_copy's constraints for the case where result is an input_iterator are not quite right Yes 3
2439(i) C++17 26.7.9 [alg.unique] unique_copy() sometimes can't fall back to reading its output Yes 3
1241(i) C++11 26.7.9 [alg.unique] unique_copy needs to require EquivalenceRelation Yes
202(i) CD1 26.7.9 [alg.unique] unique() effects unclear when predicate not an equivalence relation Yes
239(i) CD1 26.7.9 [alg.unique] Complexity of unique() and/or unique_copy incorrect Yes
241(i) CD1 26.7.9 [alg.unique] Does unique_copy() require CopyConstructible and Assignable? Yes
538(i) CD1 26.7.9 [alg.unique] 241 again: Does unique_copy() require CopyConstructible and Assignable? Yes
1101(i) NAD Editorial 26.7.9 [alg.unique] unique requirements Yes
481(i) NAD 26.7.9 [alg.unique] unique's effects on the range [result, last) Yes
490(i) NAD 26.7.9 [alg.unique] std::unique wrongly specified Yes
914(i) NAD Concepts 26.7.9 [alg.unique] Superfluous requirement for unique Yes
2985(i) LEWG 26.7.10 [alg.reverse] std::reverse should be permitted to be vectorized Yes
2074(i) C++14 26.7.10 [alg.reverse] Off by one error in std::reverse_copy Yes
223(i) TC1 26.7.10 [alg.reverse] reverse algorithm should use iter_swap rather than swap Yes
3759(i) C++23 26.7.11 [alg.rotate] ranges::rotate_copy should use std::move Yes
488(i) CD1 26.7.11 [alg.rotate] rotate throws away useful information Yes
2405(i) NAD 26.7.11 [alg.rotate] rotate()'s return value is incorrect when middle == first Yes
2716(i) C++17 26.7.12 [alg.random.sample] Specification of shuffle and sample disallows lvalue URNGs Yes 0
3191(i) C++20 26.7.13 [alg.random.shuffle] std::ranges::shuffle synopsis does not match algorithm definition Yes 1
1432(i) C++11 26.7.13 [alg.random.shuffle] random_shuffle signatures are inconsistent Yes 1433
552(i) CD1 26.7.13 [alg.random.shuffle] random_shuffle and its generator Yes
1093(i) Resolved 26.7.13 [alg.random.shuffle] Multiple definitions for random_shuffle algorithm Yes
1433(i) Dup 26.7.13 [alg.random.shuffle] random_shuffle and shuffle should have consistent signatures Yes 1432
3031(i) C++20 26.8 [alg.sorting] Algorithms and predicates with non-const reference arguments Yes 2
2492(i) C++17 26.8 [alg.sorting] Clarify requirements for comp Yes 0
556(i) C++11 26.8 [alg.sorting] Is Compare a BinaryPredicate? Yes
218(i) NAD 26.8 [alg.sorting] Algorithms do not use binary predicate objects for default comparisons Yes
3713(i) C++23 26.8.1 [alg.sorting.general] Sorted with respect to comparator (only) Yes
812(i) NAD Editorial 26.8.2 [alg.sort] unsolicited multithreading considered harmful? Yes
713(i) CD1 26.8.2.1 [sort] sort() complexity is too lax Yes
499(i) NAD Editorial 26.8.2.2 [stable.sort] Std. doesn't seem to require stable_sort() to be stable! Yes
2267(i) New 26.8.2.4 [partial.sort.copy] partial_sort_copy underspecified for ranges of two different types No 3
4162(i) New 26.8.3 [alg.nth.element] Worst time complexity of non-parallel versions of nth_element is underspecified Yes 3
2339(i) C++14 26.8.3 [alg.nth.element] Wording issue in nth_element Yes 0
2163(i) C++14 26.8.3 [alg.nth.element] nth_element requires inconsistent post-conditions Yes
4111(i) New 26.8.4 [alg.binary.search] LWG 270 and ranges version of binary search algorithms No 3
270(i) CD1 26.8.4 [alg.binary.search] Binary search requirements overly strict Yes 472
191(i) NAD 26.8.4 [alg.binary.search] Unclear complexity for algorithms such as binary search Yes
577(i) CD1 26.8.4.3 [upper.bound] upper_bound(first, last, ...) cannot return last Yes
384(i) CD1 26.8.4.4 [equal.range] equal_range has unimplementable runtime complexity Yes
472(i) Dup 26.8.4.4 [equal.range] Missing "Returns" clause in std::equal_range Yes 270
787(i) CD1 26.8.4.5 [binary.search] complexity of binary_search Yes
2357(i) C++14 26.8.5 [alg.partitions] Remaining "Assignable" requirement Yes 0
498(i) C++11 26.8.5 [alg.partitions] Requirements for partition() and stable_partition() too strong Yes
2741(i) Resolved 26.8.5 [alg.partitions] is_partitioned requirements need updating Yes 3
2973(i) LEWG 26.8.6 [alg.merge] inplace_merge exact comparison count complexity prohibits useful real-world optimizations Yes
780(i) C++11 26.8.6 [alg.merge] std::merge() specification incorrect/insufficient Yes
291(i) CD1 26.8.7 [alg.set.operations] Underspecification of set algorithms Yes
411(i) CD1 26.8.7 [alg.set.operations] Wrong names of set member functions Yes
3115(i) Resolved 26.8.7.2 [includes] Unclear description for algorithm includes Yes 3
862(i) NAD Editorial 26.8.7.2 [includes] Impossible complexity for 'includes' Yes
1109(i) NAD Concepts 26.8.7.2 [includes] std::includes should require CopyConstructible predicate Yes
3534(i) LEWG 26.8.7.4 [set.intersection] ranges::set_intersection and ranges::set_difference algorithm requirements are too strict Yes 3
3032(i) C++23 26.8.8 [alg.heap.operations] ValueSwappable requirement missing for push_heap and make_heap Yes 3
2166(i) C++17 26.8.8 [alg.heap.operations] Heap property underspecified? Yes 3
193(i) TC1 26.8.8 [alg.heap.operations] Heap operations description incorrect Yes 216
3029(i) Open 26.8.8.3 [pop.heap] pop_heap over-constrains input Yes 3
2444(i) C++20 26.8.8.5 [sort.heap] Inconsistent complexity for std::sort_heap Yes 3
4167(i) New 26.8.9 [alg.min.max] Use of "smaller" and "larger" in min, max, and minmax is unclear Yes
4034(i) New 26.8.9 [alg.min.max] Clarify specification of std::min and std::max Yes 4
2239(i) C++17 26.8.9 [alg.min.max] min/max/minmax requirements Yes 3
2325(i) C++17 26.8.9 [alg.min.max] minmax_element()'s behavior differing from max_element()'s should be noted Yes 3
2369(i) C++17 26.8.9 [alg.min.max] constexpr max(initializer_list) vs max_element Yes 3
2350(i) C++14 26.8.9 [alg.min.max] min, max, and minmax should be constexpr Yes 1
281(i) CD1 26.8.9 [alg.min.max] std::min() and max() requirements overly restrictive Yes 486
715(i) CD1 26.8.9 [alg.min.max] minmax_element complexity is too lax Yes
212(i) TC1 26.8.9 [alg.min.max] Empty range behavior unclear for several algorithms Yes
915(i) NAD Editorial 26.8.9 [alg.min.max] minmax with initializer_list should return pair of T, not pair of const T& Yes
1013(i) NAD Editorial 26.8.9 [alg.min.max] Remove IsSameType hold-over constraints Yes
1434(i) NAD Editorial 26.8.9 [alg.min.max] For min/max functions replace variadic arguments by initializer_list argument Yes
1308(i) NAD 26.8.9 [alg.min.max] Concerns about initializer_list overloads of min, max, and minmax Yes
190(i) NAD 26.8.9 [alg.min.max] min() and max() functions should be std::binary_functions Yes
486(i) Dup 26.8.9 [alg.min.max] min/max CopyConstructible requirement is too strict Yes 281
2688(i) C++17 26.8.10 [alg.clamp] clamp misses preconditions and has extraneous condition on result Yes 0
142(i) TC1 26.8.11 [alg.lex.comparison] lexicographical_compare complexity wrong Yes
3410(i) C++23 26.8.12 [alg.three.way] lexicographical_compare_three_way is overspecified Yes 3
3350(i) C++20 26.8.12 [alg.three.way] Simplify return type of lexicographical_compare_three_way Yes 0
3061(i) Resolved 26.8.12 [alg.three.way] What is the return type of compare_3way? Yes 2
3169(i) C++20 26.8.13 [alg.permutation.generators] ranges permutation generators discard useful information Yes 0
3487(i) New 26.10 [numeric.ops] Missing precondition on input and output aliasing of [numeric.ops] No 3
2055(i) Resolved 26.10 [numeric.ops] std::move in std::accumulate and other algorithms Yes 3
2924(i) Resolved 26.10 [numeric.ops] An ExecutionPolicy overload for inner_product() seems impractical Yes
1067(i) NAD Concepts 26.10 [numeric.ops] simplified wording for inner_product Yes
2918(i) Resolved 26.10.5 [inner.product] Possible need for extra storage in inner_product Yes
3048(i) C++20 26.10.6 [transform.reduce] transform_reduce(exec, first1, last1, first2, init) discards execution policy Yes 0
539(i) C++11 26.10.7 [partial.sum] partial_sum and adjacent_difference should mention requirements Yes
3060(i) New 26.10.8 [exclusive.scan] XXX_scan algorithms are specified to work with move-only T, but are specified to make N copies of T into the destination range No 2
2687(i) C++17 26.10.8 [exclusive.scan] {inclusive,exclusive}_scan misspecified Yes 1
3222(i) C++20 26.10.9 [inclusive.scan] P0574R1 introduced preconditions on non-existent parameters Yes 0
3463(i) New 26.10.11 [transform.inclusive.scan] Incorrect requirements for transform_inclusive_scan without initial value Yes 3
3058(i) C++20 26.10.12 [adjacent.difference] Parallel adjacent_difference shouldn't require creating temporaries Yes 3
2919(i) Resolved 26.10.12 [adjacent.difference] The specification for adjacent_difference has baked-in sequential semantics Yes
871(i) C++11 26.10.13 [numeric.iota] Iota's requirements on T are too strong Yes
2837(i) C++17 26.10.14 [numeric.ops.gcd] gcd and lcm should support a wider range of input values Yes 0
2759(i) C++17 26.10.14 [numeric.ops.gcd] gcd / lcm and bool for the WP Yes
3200(i) C++20 26.10.16 [numeric.ops.midpoint] midpoint should not constrain T is complete Yes 2
4030(i) WP 26.10.17.1 [numeric.sat.func] Clarify whether arithmetic expressions in [numeric.sat.func] are mathematical or C++ Yes
3628(i) New 26.11 [specialized.algorithms] "Effects: Equivalent to:" and uninitialized memory algorithms No 3
3063(i) New 26.11 [specialized.algorithms] Parallel algorithms in <memory> are underspecified No 3
2433(i) C++17 26.11 [specialized.algorithms] uninitialized_copy()/etc. should tolerate overloaded operator& Yes 0
866(i) C++11 26.11 [specialized.algorithms] Qualification of placement new-expressions Yes
999(i) C++11 26.11 [specialized.algorithms] Taking the address of a function Yes
3064(i) Resolved 26.11 [specialized.algorithms] How do uninitialized memory algorithms obtain pointer without undefined behavior? Yes 3
3156(i) Resolved 26.11 [specialized.algorithms] ForwardIterator should only mean forward iterator Yes 3
1029(i) NAD Concepts 26.11 [specialized.algorithms] Specialized algorithms for memory management need to be concept-constrained templates Yes
3870(i) C++23 26.11.1 [specialized.algorithms.general] Remove voidify Yes
3647(i) New 26.11.2 [special.mem.concepts] nothrow-input-iterator constraints should not mention copying Yes 3
3747(i) C++23 26.11.5 [uninitialized.copy] ranges::uninitialized_copy_n, ranges::uninitialized_move_n, and ranges::destroy_n should use std::move Yes
3054(i) C++20 26.11.5 [uninitialized.copy] uninitialized_copy appears to not be able to meet its exception-safety guarantee Yes 2
3355(i) C++20 26.11.5 [uninitialized.copy] The memory algorithms should support move-only input iterators introduced by P1207 Yes 2
754(i) NAD Editorial 26.11.5 [uninitialized.copy] Ambiguous return clause for std::uninitialized_copy Yes
582(i) NAD 26.11.5 [uninitialized.copy] specialized algorithms and volatile storage Yes
3918(i) WP 26.11.6 [uninitialized.move] std::uninitialized_move/_n and guaranteed copy elision Yes 3
1339(i) C++11 26.11.7 [uninitialized.fill] uninitialized_fill_n should return the end of its range Yes
3888(i) New 26.11.8 [specialized.construct] Most ranges uninitialized memory algorithms are underconstrained Yes 3
3436(i) WP 26.11.8 [specialized.construct] std::construct_at should support arrays Yes 2
3889(i) New 26.11.9 [specialized.destroy] std::(ranges::)destroy_at should destroy array elements in the decreasing index order Yes 3
4077(i) New 26.12.2 [alg.rand.generate] Unclear preconditions of std::ranges::generate_random No 2
4085(i) WP 26.12.2 [alg.rand.generate] ranges::generate_random's helper lambda should specify the return type Yes 2
4086(i) NAD 26.12.2 [alg.rand.generate] ranges::generate_random_n is missing Yes
3521(i) C++23 26.13 [alg.c.library] Overly strict requirements on qsort and bsearch Yes
286(i) CD1 26.13 [alg.c.library] <cstdlib> requirements missing size_t typedef Yes
405(i) CD1 26.13 [alg.c.library] qsort and POD Yes

Section 27 (150 issues)

(view only non-Ready open issues)

Issue Status Section Title Proposed Resolution Priority Duplicates
7(i) TC1 27 [strings] String clause minor problems Yes
2841(i) Resolved 27 [strings] Use of "Equivalent to" in [strings] Yes 3
85(i) NAD 27 [strings] String char types Yes
1081(i) NAD Concepts 27 [strings] basic_string needs to be a concept-constrained template Yes
2513(i) New 27.1 [strings.general] Missing requirements for basic_string::value_type No 4
1170(i) C++11 27.1 [strings.general] String char-like types no longer PODs Yes
3695(i) NAD 27.1 [strings.general] The standard-layout property of char-like types serves for nothing Yes 4
2994(i) WP 27.2 [char.traits] Needless UB for basic_string and basic_string_view Yes 3
830(i) NAD Editorial 27.2 [char.traits] Incomplete list of char_traits specializations Yes
570(i) NAD 27.2 [char.traits] Request adding additional explicit specializations of char_traits Yes
4152(i) New 27.2.2 [char.traits.require] The primary template of std::char_traits is totally underspecified Yes
3694(i) New 27.2.2 [char.traits.require] Should traits_type::length be customizable? No 4
3085(i) C++23 27.2.2 [char.traits.require] char_traits::copy precondition too weak Yes 2
3518(i) C++23 27.2.2 [char.traits.require] Exception requirements on char trait operations unclear Yes
335(i) CD1 27.2.2 [char.traits.require] minor issue with char_traits, table 37 Yes
352(i) CD1 27.2.3 [char.traits.typedefs] missing fpos requirements Yes
1200(i) NAD 27.2.3 [char.traits.typedefs] "surprising" char_traits<T>::int_type requirements Yes
3942(i) New 27.2.4 [char.traits.specializations] Inconsistent use of const char_type& in standard specializations of std::char_traits Yes 3
709(i) CD1 27.2.4 [char.traits.specializations] char_traits::not_eof has wrong signature Yes
2232(i) Resolved 27.2.4 [char.traits.specializations] [CD] The char_traits specializations should declare their length(), compare(), and find() members constexpr Yes
831(i) NAD Editorial 27.2.4 [char.traits.specializations] wrong type for not_eof() Yes
4063(i) New 27.2.4.2 [char.traits.specializations.char] Freestanding std::char_traits<char>::eof depends on non-freestanding EOF No 2
467(i) CD1 27.2.4.2 [char.traits.specializations.char] char_traits::lt(), compare(), and memcmp() Yes
2959(i) New 27.2.4.4 [char.traits.specializations.char16.t] char_traits<char16_t>::eof is a valid UTF-16 code unit No 3
1414(i) C++11 27.2.4.4 [char.traits.specializations.char16.t] Fixing remaining dead links to POS_T and OFF_T Yes 1444
57(i) TC1 27.2.4.6 [char.traits.specializations.wchar.t] Mistake in char_traits Yes
3989(i) New 27.3 [string.view] The whole range for an iterator obtained from a std::span or std::basic_string_view is not clear No 3
2883(i) LEWG 27.3 [string.view] The standard library should provide string_view parameters instead or in addition for functions defined with char const * or string const & as parameter types. No
2778(i) C++17 27.3 [string.view] basic_string_view is missing constexpr Yes 0
2780(i) Resolved 27.3 [string.view] basic_string_view::copy is missing constexpr Yes 2
3950(i) WP 27.3.2 [string.view.synop] std::basic_string_view comparison operators are overspecified Yes
3457(i) New 27.3.3 [string.view.template] *this is not invalidated Yes 3
2938(i) Resolved 27.3.3 [string.view.template] basic_string_view::const_iterator should be literal types Yes 2
3068(i) NAD 27.3.3 [string.view.template] Forbid assigning an rvalue basic_string to basic_string_view Yes 2
4102(i) New 27.3.3.2 [string.view.cons] string_view(Iter, Iter) constructor breaks existing code No 2
3573(i) C++23 27.3.3.2 [string.view.cons] Missing Throws element for basic_string_view(It begin, End end) Yes
3581(i) C++23 27.3.3.2 [string.view.cons] The range constructor makes basic_string_view not trivially move constructible Yes
3857(i) C++23 27.3.3.2 [string.view.cons] basic_string_view should allow explicit conversion when only traits vary Yes
2826(i) C++17 27.3.3.4 [string.view.iterators] string_view iterators use old wording Yes 0
3040(i) C++20 27.3.3.8 [string.view.ops] basic_string_view::starts_with Effects are incorrect Yes 0
2777(i) C++17 27.3.3.8 [string.view.ops] basic_string_view::copy should use char_traits::copy Yes 0
3432(i) C++23 27.3.4 [string.view.comparison] Missing requirement for comparison_category Yes 0
2755(i) C++17 27.3.5 [string.view.io] §[string.view.io] uses non-existent basic_string_view::to_string function Yes 0
2791(i) Resolved 27.3.6 [string.view.hash] string_view objects and strings should yield the same hash values Yes
3339(i) New 27.4.3 [basic.string] Move-constructed empty-container capacity No 3
3451(i) New 27.4.3 [basic.string] Inconsistently explicit deduction guides Yes 3
3075(i) C++20 27.4.3 [basic.string] basic_string needs deduction guides from basic_string_view Yes
2063(i) C++17 27.4.3 [basic.string] Contradictory requirements for string move assignment Yes 3
2064(i) C++14 27.4.3 [basic.string] More noexcept issues in basic_string Yes
2268(i) C++14 27.4.3 [basic.string] Setting a default argument in the declaration of a member function assign of std::basic_string Yes
876(i) C++11 27.4.3 [basic.string] basic_string access operations should give stronger guarantees Yes
180(i) CD1 27.4.3 [basic.string] Container member iterator arguments constness has unintended consequences Yes
263(i) CD1 27.4.3 [basic.string] Severe restriction on basic_string reference counting Yes
530(i) CD1 27.4.3 [basic.string] Must elements of a string be contiguous? Yes
534(i) CD1 27.4.3 [basic.string] Missing basic_string members Yes
42(i) TC1 27.4.3 [basic.string] String ctors specify wrong default allocator Yes
83(i) TC1 27.4.3 [basic.string] String::npos vs. string::max_size() Yes 89
209(i) TC1 27.4.3 [basic.string] basic_string declarations inconsistent Yes
2836(i) Resolved 27.4.3 [basic.string] More string operations should be noexcept Yes 2
2318(i) Resolved 27.4.3 [basic.string] basic_string's wording has confusing relics from the copy-on-write era Yes 4
2391(i) Resolved 27.4.3 [basic.string] basic_string is missing non-const data() Yes 3
718(i) NAD Editorial 27.4.3 [basic.string] basic_string is not a sequence Yes
3165(i) NAD 27.4.3 [basic.string] All starts_with() overloads should be called "begins_with" Yes 2
2372(i) NAD 27.4.3 [basic.string] Assignment from int to std::string Yes 4
4(i) NAD 27.4.3 [basic.string] basic_string size_type and difference_type should be implementation defined Yes
614(i) NAD 27.4.3 [basic.string] std::string allocator requirements still inconsistent Yes
2084(i) NAD 27.4.3 [basic.string] basic_string use of charT* Yes
4029(i) New 27.4.3.1 [basic.string.general] basic_string accidentally fails to meet the reversible container requirements Yes 3
3650(i) C++23 27.4.3.1 [basic.string.general] Are std::basic_string's iterator and const_iterator constexpr iterators? Yes
2861(i) C++17 27.4.3.2 [string.require] basic_string should require that charT match traits::char_type Yes
2760(i) C++17 27.4.3.2 [string.require] non-const basic_string::data should not invalidate iterators Yes
2003(i) C++14 27.4.3.2 [string.require] String exception inconsistency in erase. Yes 0
847(i) C++11 27.4.3.2 [string.require] string exception safety guarantees Yes
301(i) CD1 27.4.3.2 [string.require] basic_string template ctor effects clause omits allocator argument Yes
86(i) TC1 27.4.3.2 [string.require] String constructors don't describe exceptions Yes
2151(i) Resolved 27.4.3.2 [string.require] basic_string<>::swap semantics ignore allocators Yes 3
466(i) NAD 27.4.3.2 [string.require] basic_string ctor should prevent null pointer error Yes
3663(i) New 27.4.3.3 [string.cons] basic_string(const T&, const Alloc&) turns moves into copies Yes 3
2946(i) C++20 27.4.3.3 [string.cons] LWG 2758's resolution missed further corrections Yes 2
3076(i) C++20 27.4.3.3 [string.cons] basic_string CTAD ambiguity Yes
2742(i) C++17 27.4.3.3 [string.cons] Inconsistent string interface taking string_view Yes 1
2583(i) C++17 27.4.3.3 [string.cons] There is no way to supply an allocator for basic_string(str, pos) Yes 0
2069(i) C++14 27.4.3.3 [string.cons] Inconsistent exception spec for basic_string move constructor Yes
2235(i) C++14 27.4.3.3 [string.cons] Undefined behavior without proper requirements on basic_string constructors Yes
3111(i) Resolved 27.4.3.3 [string.cons] Too strong precondition on basic_string constructor Yes 2
3033(i) NAD Editorial 27.4.3.3 [string.cons] basic_string move ctor is underspecified Yes
2402(i) NAD 27.4.3.3 [string.cons] basic_string(const basic_string& str, size_type pos, size_type n = npos) shouldn't use Allocator() Yes 3
2319(i) NAD 27.4.3.3 [string.cons] basic_string's move constructor should not be noexcept Yes 1
2822(i) NAD 27.4.3.3 [string.cons] Resolution for LWG 2742 introduces ambiguities Yes
2580(i) NAD 27.4.3.3 [string.cons] Who is definitive: operator= or assign? Yes 4
3311(i) Dup 27.4.3.3 [string.cons] basic_string::operator=(charT c) should be constrained Yes
1192(i) C++11 27.4.3.4 [string.iterators] basic_string missing definitions for cbegin / cend / crbegin / crend Yes
3645(i) C++23 27.4.3.5 [string.capacity] resize_and_overwrite is overspecified to call its callback with lvalues Yes 2
3004(i) C++20 27.4.3.5 [string.capacity] §[string.capacity] and §[vector.capacity] should specify time complexity for capacity() Yes 0
2834(i) C++17 27.4.3.5 [string.capacity] Resolution LWG 2223 is missing wording about end iterators Yes 0
259(i) CD1 27.4.3.5 [string.capacity] basic_string::operator[] and const correctness Yes
2968(i) Resolved 27.4.3.5 [string.capacity] Inconsistencies between basic_string reserve and vector/unordered_map/unordered_set reserve functions Yes 3
3579(i) NAD 27.4.3.5 [string.capacity] Complexity guarantees for resize() and append() functions across the library Yes 3
104(i) NAD 27.4.3.5 [string.capacity] Description of basic_string::operator[] is unclear Yes
2475(i) C++17 27.4.3.6 [string.access] Allow overwriting of std::basic_string terminator with charT() to allow cleaner interoperation with legacy APIs Yes 3
2207(i) C++14 27.4.3.6 [string.access] basic_string::at should not have a Requires clause Yes
84(i) NAD 27.4.3.6 [string.access] Ambiguity with string::insert() Yes
3662(i) New 27.4.3.7.2 [string.append] basic_string::append/assign(NTBS, pos, n) suboptimal Yes 3
2788(i) C++17 27.4.3.7.2 [string.append] basic_string range mutators unintentionally require a default constructible allocator Yes 2
2758(i) C++17 27.4.3.7.3 [string.assign] std::string{}.assign("ABCDE", 0, 1) is ambiguous Yes 1
2579(i) C++17 27.4.3.7.3 [string.assign] Inconsistency wrt Allocators in basic_string assignment vs. basic_string::assign Yes 0
2929(i) Resolved 27.4.3.7.3 [string.assign] basic_string misuses "Effects: Equivalent to" Yes 3
141(i) TC1 27.4.3.7.4 [string.insert] basic_string::find_last_of, find_last_not_of say pos instead of xpos Yes
2757(i) Resolved 27.4.3.7.4 [string.insert] std::string{}.insert(3, "ABCDE", 0, 1) is ambiguous Yes 1
88(i) NAD 27.4.3.7.4 [string.insert] Inconsistency between string::insert() and string::append() Yes
377(i) NAD 27.4.3.7.4 [string.insert] basic_string::insert and length_error Yes
89(i) Dup 27.4.3.7.4 [string.insert] Missing throw specification for string::insert() and string::replace() Yes 83
428(i) CD1 27.4.3.7.5 [string.erase] string::erase(iterator) validity Yes
27(i) TC1 27.4.3.7.5 [string.erase] String::erase(range) yields wrong iterator Yes
1323(i) C++11 27.4.3.7.6 [string.replace] basic_string::replace should use const_iterator Yes
368(i) NAD Editorial 27.4.3.7.6 [string.replace] basic_string::replace has two "Throws" paragraphs Yes
403(i) CD1 27.4.3.7.8 [string.swap] basic_string::swap should not throw exceptions Yes
535(i) CD1 27.4.3.7.8 [string.swap] std::string::swap specification poorly worded Yes
5(i) TC1 27.4.3.7.8 [string.swap] String::compare specification questionable Yes 87
87(i) Dup 27.4.3.7.8 [string.swap] Error in description of string::compare() Yes 5
3752(i) NAD 27.4.3.8.3 [string.substr] Should string::substr forward the allocator to the newly created string? Yes
2771(i) C++17 27.4.3.8.4 [string.compare] Broken Effects of some basic_string::compare functions in terms of basic_string_view Yes 1
1138(i) C++11 27.4.4.1 [string.op.plus] Unusual return value for operator+ Yes
2852(i) NAD 27.4.4.2 [string.cmp] Specifications of operator== for std::basic_strings and std::basic_string_views are difficult to conform to Yes 2
2011(i) C++14 27.4.4.4 [string.io] Unexpected output required of strings Yes
91(i) CD1 27.4.4.4 [string.io] Description of operator>> and getline() for string<> might cause endless loop Yes
435(i) CD1 27.4.4.4 [string.io] bug in DR 25 Yes
586(i) CD1 27.4.4.4 [string.io] string inserter not a formatted function Yes
824(i) CD1 27.4.4.4 [string.io] rvalue ref issue with basic_string inserter Yes
25(i) TC1 27.4.4.4 [string.io] String operator<< uses width() value wrong Yes 67
90(i) TC1 27.4.4.4 [string.io] Incorrect description of operator >> for strings Yes
211(i) TC1 27.4.4.4 [string.io] operator>>(istream&, string&) doesn't set failbit Yes
2535(i) NAD 27.4.4.4 [string.io] Inconsistency between ostream::write and ostream::operator<< Yes 2
67(i) Dup 27.4.4.4 [string.io] Setw useless for strings Yes 25
3837(i) New 27.4.4.5 [string.erasure] std::erase_if overloads for non-associative containers should move (and not copy) their predicate object Yes 3
2403(i) C++17 27.4.5 [string.conversions] stof() should call strtof() and wcstof() Yes 2
2009(i) C++14 27.4.5 [string.conversions] Reporting out-of-bound values on numeric string conversions Yes
1261(i) C++11 27.4.5 [string.conversions] Insufficent overloads for to_string / to_wstring Yes
771(i) CD1 27.4.5 [string.conversions] Impossible throws clause in [string.conversions] Yes
772(i) CD1 27.4.5 [string.conversions] Impossible return clause in [string.conversions] Yes
2270(i) NAD 27.4.5 [string.conversions] Inconsistent to_string overloads Yes
3705(i) C++23 27.4.6 [basic.string.hash] Hashability shouldn't depend on basic_string's allocator Yes
2978(i) C++20 27.4.6 [basic.string.hash] Hash support for pmr::string and friends Yes 0
2355(i) NAD 27.4.7 [basic.string.literals] "s" UDL suffix should be reserved for a compile-time string library type Yes 1
2237(i) New 27.5 [c.strings] <cuchar> macros No 4
2238(i) Open 27.5 [c.strings] Problematic iterator-pair constructor of containers No 3
2482(i) C++17 27.5 [c.strings] §[c.strings] Table 73 mentions nonexistent functions Yes
345(i) CD1 27.5 [c.strings] type tm in <cwchar> Yes
615(i) NAD Editorial 27.5 [c.strings] Inconsistencies in Section 21.4 Yes
4064(i) WP 27.5.1 [cstring.syn] Clarify that std::launder is not needed when using the result of std::memcpy Yes 3

Section 28 (278 issues)

(view only non-Ready open issues)

Issue Status Section Title Proposed Resolution Priority Duplicates
3266(i) C++20 28.2.1 [charconv.syn] to_chars(bool) should be deleted Yes 0
3373(i) C++20 28.2.1 [charconv.syn] {to,from}_chars_result and format_to_n_result need the "we really mean what we say" wording Yes 0
3456(i) New 28.2.3 [charconv.from.chars] Pattern used by std::from_chars is underspecified Yes 3
3082(i) Open 28.2.3 [charconv.from.chars] from_chars specification regarding floating point rounding is inconsistent Yes 2
3081(i) Open 28.2.3 [charconv.from.chars] Floating point from_chars API does not distinguish between overflow and underflow Yes 2
3080(i) C++20 28.2.3 [charconv.from.chars] Floating point from_chars pattern specification breaks round-tripping Yes 0
317(i) CD1 28.3 [localization] Instantiation vs. specialization of facets Yes
495(i) CD1 28.3 [localization] Clause 22 template parameter requirements Yes
708(i) NAD 28.3 [localization] Locales need to be per thread and updated for POSIX changes Yes
1082(i) NAD Concepts 28.3 [localization] codecvt needs to be a concept-constrained template Yes
1083(i) NAD Concepts 28.3 [localization] InputIterator and OutputIterator template parameters need to be concept constraints Yes
1298(i) C++11 28.3.2 [locale.syn] Missing specialization of ctype_byname<char> Yes
3353(i) New 28.3.3.1 [locale] locale's copy assignment operator should return locale& Yes 3
268(i) CD1 28.3.3.1 [locale] Typo in locale synopsis Yes
360(i) CD1 28.3.3.1 [locale] locale mandates inefficient implementation Yes
31(i) TC1 28.3.3.1 [locale] Immutable locale values Yes 378
37(i) TC1 28.3.3.1 [locale] Leftover "global" reference Yes
137(i) TC1 28.3.3.1 [locale] Do use_facet and has_facet look in the global locale? Yes
330(i) NAD 28.3.3.1 [locale] Misleading "exposition only" value in class locale definition Yes
378(i) Dup 28.3.3.1 [locale] locale immutability and locale::operator=() Yes 31
3767(i) WP 28.3.3.1.2.1 [locale.category] codecvt<charN_t, char8_t, mbstate_t> incorrectly added to locale Yes 3
327(i) CD1 28.3.3.1.2.1 [locale.category] Typo in time_get facet in table 52 Yes 447
340(i) CD1 28.3.3.1.2.1 [locale.category] interpretation of has_facet<Facet>(loc) Yes
347(i) CD1 28.3.3.1.2.1 [locale.category] locale::category and bitmask requirements Yes
21(i) TC1 28.3.3.1.2.1 [locale.category] Codecvt_byname<> instantiations Yes
30(i) TC1 28.3.3.1.2.1 [locale.category] Wrong header for LC_* Yes
121(i) NAD 28.3.3.1.2.1 [locale.category] Detailed definition for ctype<wchar_t> specialization Yes
502(i) NAD 28.3.3.1.2.1 [locale.category] Proposition: Clarification of the interaction between a facet and an iterator Yes
447(i) Dup 28.3.3.1.2.1 [locale.category] Wrong template argument for time facets Yes 327
2694(i) C++17 28.3.3.1.2.2 [locale.facet] Application of LWG 436 accidentally deleted definition of "facet" Yes 3
436(i) CD1 28.3.3.1.2.2 [locale.facet] are cv-qualified facet types valid facets? Yes
2295(i) C++23 28.3.3.1.3 [locale.cons] Locale name when the provided Facet is a nullptr Yes 3
3673(i) Resolved 28.3.3.1.3 [locale.cons] §[locale.cons] Ambiguous argument in Throws for locale+name+category constructor Yes 3
3676(i) Resolved 28.3.3.1.3 [locale.cons] Name of locale composed using std::locale::none Yes 3
3674(i) New 28.3.3.1.4 [locale.members] Removal of requirement for locale names for construction of locales not explained Yes 2
2394(i) C++17 28.3.3.1.4 [locale.members] locale::name specification unclear — what is implementation-defined? Yes 3
14(i) TC1 28.3.3.1.4 [locale.members] Locale::combine should be const Yes
15(i) TC1 28.3.3.1.4 [locale.members] Locale::name requirement inconsistent Yes
452(i) NAD 28.3.3.1.4 [locale.members] locale::combine should be permitted to generate a named locale Yes
8(i) TC1 28.3.3.1.6 [locale.statics] Locale::global lacks guarantee Yes
38(i) TC1 28.3.3.2 [locale.global.templates] Facet definition incomplete Yes
2019(i) C++11 28.3.3.3.1 [classification] isblank not supported by std::locale Yes
391(i) CD1 28.3.3.3.2 [conversions.character] non-member functions specified as const Yes
228(i) CD1 28.3.4 [locale.categories] Incorrect specification of "..._byname" facets Yes
338(i) CD1 28.3.4 [locale.categories] is whitespace allowed between `-' and a digit? Yes
439(i) NAD 28.3.4 [locale.categories] Should facets be copyable? Yes
503(i) NAD 28.3.4 [locale.categories] more on locales Yes
585(i) NAD 28.3.4 [locale.categories] facet error reporting Yes
339(i) CD1 28.3.4.2 [category.ctype] definition of bitmask type restricted to clause 27 Yes
356(i) NAD 28.3.4.2 [category.ctype] Meaning of ctype_base::mask enumerators Yes
4037(i) WP 28.3.4.2.1 [category.ctype.general] Static data members of ctype_base are not yet required to be usable in constant expressions Yes
473(i) C++11 28.3.4.2.2 [locale.ctype] underspecified ctype calls Yes
379(i) CD1 28.3.4.2.2.3 [locale.ctype.virtuals] nonsensical ctype::do_widen() requirement Yes
126(i) TC1 28.3.4.2.2.3 [locale.ctype.virtuals] typos in Effects clause of ctype::do_narrow() Yes
152(i) TC1 28.3.4.2.2.3 [locale.ctype.virtuals] Typo in scan_is() semantics Yes
417(i) NAD 28.3.4.2.2.3 [locale.ctype.virtuals] what does ctype::do_widen() return on failure Yes
616(i) CD1 28.3.4.2.3 [locale.ctype.byname] missing 'typename' in ctype_byname Yes
124(i) TC1 28.3.4.2.3 [locale.ctype.byname] ctype_byname<charT>::do_scan_is & do_scan_not return type should be const charT* Yes
695(i) CD1 28.3.4.2.4 [facet.ctype.special] ctype<char>::classic_table() not accessible Yes
153(i) CD1 28.3.4.2.4.3 [facet.ctype.char.members] Typo in narrow() semantics Yes 207
28(i) TC1 28.3.4.2.4.3 [facet.ctype.char.members] Ctype<char>is ambiguous Yes 236
207(i) Dup 28.3.4.2.4.3 [facet.ctype.char.members] ctype<char> members return clause incomplete Yes 153
236(i) Dup 28.3.4.2.4.3 [facet.ctype.char.members] ctype<char>::is() member modifies facet Yes 28
76(i) CD1 28.3.4.2.5 [locale.codecvt] Can a codecvt facet always convert one internal character at a time? Yes
75(i) TC1 28.3.4.2.5 [locale.codecvt] Contradiction in codecvt::length's argument types Yes
16(i) TC1 28.3.4.2.5 [locale.codecvt] Bad ctype_byname<char> decl Yes
19(i) TC1 28.3.4.2.5 [locale.codecvt] "Noconv" definition too vague Yes 10
24(i) TC1 28.3.4.2.5 [locale.codecvt] "do_convert" doesn't exist Yes 72
33(i) TC1 28.3.4.2.5 [locale.codecvt] Codecvt<> mentions from_type Yes 43
74(i) TC1 28.3.4.2.5 [locale.codecvt] Garbled text for codecvt::do_max_length Yes
138(i) NAD 28.3.4.2.5 [locale.codecvt] Class ctype_byname<char> redundant and misleading Yes
382(i) NAD 28.3.4.2.5 [locale.codecvt] codecvt do_in/out result Yes
72(i) Dup 28.3.4.2.5 [locale.codecvt] Do_convert phantom member function Yes 24
3337(i) New 28.3.4.2.5.3 [locale.codecvt.virtuals] What is "is initialized" supposed to mean? No 3
664(i) CD1 28.3.4.2.5.3 [locale.codecvt.virtuals] do_unshift for codecvt<char, char, mbstate_t> Yes
665(i) CD1 28.3.4.2.5.3 [locale.codecvt.virtuals] do_unshift return value Yes
393(i) NAD Editorial 28.3.4.2.5.3 [locale.codecvt.virtuals] do_in/do_out operation on state unclear Yes
305(i) CD1 28.3.4.2.6 [locale.codecvt.byname] Default behavior of codecvt<wchar_t, char, mbstate_t>::length() Yes
380(i) CD1 28.3.4.2.6 [locale.codecvt.byname] typos in codecvt tables 53 and 54 Yes
381(i) CD1 28.3.4.2.6 [locale.codecvt.byname] detection of invalid mbstate_t in codecvt Yes
302(i) NAD 28.3.4.2.6 [locale.codecvt.byname] Need error indication from codecvt<>::do_length Yes
500(i) NAD 28.3.4.2.6 [locale.codecvt.byname] do_length cannot be implemented correctly Yes
10(i) Dup 28.3.4.2.6 [locale.codecvt.byname] Codecvt<>::do unclear Yes 19
43(i) Dup 28.3.4.2.6 [locale.codecvt.byname] Locale table correction Yes 33
344(i) NAD 28.3.4.3 [category.numeric] grouping + showbase Yes
275(i) CD1 28.3.4.3.2.2 [facet.num.get.members] Wrong type in num_get::get() overloads Yes
18(i) TC1 28.3.4.3.2.2 [facet.num.get.members] Get(...bool&) omitted Yes
4163(i) New 28.3.4.3.2.3 [facet.num.get.virtuals] Can the overload of std::num_get::do_get for bool call the overload for long? No
3689(i) New 28.3.4.3.2.3 [facet.num.get.virtuals] num_get overflow determination unclear and incorrect No 3
3214(i) New 28.3.4.3.2.3 [facet.num.get.virtuals] §[facet.num.get.virtuals] doesn't say what it means for digit grouping to be consistent No 4
2381(i) C++23 28.3.4.3.2.3 [facet.num.get.virtuals] Inconsistency in parsing floating point numbers Yes 2
1169(i) C++17 28.3.4.3.2.3 [facet.num.get.virtuals] num_get not fully compatible with strto* Yes 3
427(i) C++11 28.3.4.3.2.3 [facet.num.get.virtuals] Stage 2 and rationale of DR 221 Yes
2041(i) C++11 28.3.4.3.2.3 [facet.num.get.virtuals] Stage 2 accumulate incompatibilty Yes
23(i) CD1 28.3.4.3.2.3 [facet.num.get.virtuals] Num_get overflow result Yes
221(i) CD1 28.3.4.3.2.3 [facet.num.get.virtuals] num_get<>::do_get stage 2 processing broken Yes
321(i) CD1 28.3.4.3.2.3 [facet.num.get.virtuals] Typo in num_get Yes
358(i) CD1 28.3.4.3.2.3 [facet.num.get.virtuals] interpreting thousands_sep after a decimal_point Yes
17(i) TC1 28.3.4.3.2.3 [facet.num.get.virtuals] Bad bool parsing Yes
154(i) TC1 28.3.4.3.2.3 [facet.num.get.virtuals] Missing double specifier for do_get() Yes
459(i) NAD 28.3.4.3.2.3 [facet.num.get.virtuals] Requirement for widening in stage 2 is overspecification Yes
662(i) NAD 28.3.4.3.2.3 [facet.num.get.virtuals] Inconsistent handling of incorrectly-placed thousands separators Yes
826(i) NAD 28.3.4.3.3 [locale.nm.put] Equivalent of %'d, or rather, lack thereof? Yes
359(i) CD1 28.3.4.3.3.2 [facet.num.put.members] num_put<>::do_put (..., bool) undocumented Yes
2703(i) New 28.3.4.3.3.3 [facet.num.put.virtuals] No provision for fill-padding when boolalpha is set No 3
2702(i) New 28.3.4.3.3.3 [facet.num.put.virtuals] num_put::do_put(..., bool) performs ill-formed do_put call No 3
2117(i) Open 28.3.4.3.3.3 [facet.num.put.virtuals] ios_base manipulators should have showgrouping/noshowgrouping No 3
4084(i) WP 28.3.4.3.3.3 [facet.num.put.virtuals] std::fixed ignores std::uppercase Yes 3
2293(i) C++14 28.3.4.3.3.3 [facet.num.put.virtuals] Wrong facet used by num_put::do_put Yes 0
671(i) C++11 28.3.4.3.3.3 [facet.num.put.virtuals] precision of hexfloat Yes
1152(i) C++11 28.3.4.3.3.3 [facet.num.put.virtuals] Expressions parsed differently than intended Yes
231(i) CD1 28.3.4.3.3.3 [facet.num.put.virtuals] Precision in iostream? Yes
282(i) CD1 28.3.4.3.3.3 [facet.num.put.virtuals] What types does numpunct grouping refer to? Yes
34(i) TC1 28.3.4.3.3.3 [facet.num.put.virtuals] True/falsename() not in ctype<> Yes
361(i) NAD 28.3.4.3.3.3 [facet.num.put.virtuals] num_get<>::do_get (..., void*&) checks grouping Yes
20(i) TC1 28.3.4.4.1.3 [facet.numpunct.virtuals] Thousands_sep returns wrong type Yes
318(i) CD1 28.3.4.4.2 [locale.numpunct.byname] Misleading comment in definition of numpunct_byname Yes
248(i) CD1 28.3.4.6 [category.time] time_get fails to set eofbit Yes
71(i) TC1 28.3.4.6.2 [locale.time.get] Do_get_monthname synopsis missing argument Yes
3275(i) New 28.3.4.6.2.3 [locale.time.get.virtuals] Why does time_get::do_get require a valid pointer when none of the others do? Yes 3
2512(i) Open 28.3.4.6.2.3 [locale.time.get.virtuals] Y2K bites; what is an "unambiguous year identifier"? No 4
461(i) CD1 28.3.4.6.2.3 [locale.time.get.virtuals] time_get hard or impossible to implement Yes
164(i) TC1 28.3.4.6.4.3 [locale.time.put.virtuals] do_put() has apparently unused fill argument Yes
836(i) C++11 28.3.4.7.2.3 [locale.money.get.virtuals] Effects of money_base::space and money_base::none on money_get Yes 670
667(i) NAD 28.3.4.7.2.3 [locale.money.get.virtuals] money_get's widened minus sign Yes
668(i) NAD 28.3.4.7.2.3 [locale.money.get.virtuals] money_get's empty minus sign Yes
669(i) NAD 28.3.4.7.2.3 [locale.money.get.virtuals] Equivalent postive and negative signs in money_get Yes
2983(i) New 28.3.4.7.3.3 [locale.money.put.virtuals] money_put::do_put underspecified Yes 3
328(i) CD1 28.3.4.7.3.3 [locale.money.put.virtuals] Bad sprintf format modifier in money_put<>::do_put() Yes
2691(i) New 28.3.4.7.4 [locale.moneypunct] money_base::space and do_put: U+0020 versus fill Yes 3
670(i) Dup 28.3.4.7.4 [locale.moneypunct] money_base::pattern and space Yes 836
374(i) NAD 28.3.4.7.4.2 [locale.moneypunct.members] moneypunct::frac_digits returns int not unsigned Yes
325(i) CD1 28.3.4.7.4.3 [locale.moneypunct.virtuals] Misleading text in moneypunct<>::do_grouping Yes
666(i) CD1 28.3.4.7.4.3 [locale.moneypunct.virtuals] moneypunct::do_curr_symbol() Yes
326(i) NAD 28.3.4.7.5 [locale.moneypunct.byname] Missing typedef in moneypunct_byname Yes
2028(i) C++14 28.3.4.8.2 [locale.messages] messages_base::catalog overspecified Yes
4043(i) WP 28.4.2.2 [text.encoding.general] "ASCII" is not a registered character encoding Yes
4038(i) WP 28.4.2.5 [text.encoding.aliases] std::text_encoding::aliases_view should have constexpr iterators Yes
3651(i) New 28.5 [format] Unspecified lifetime guarantees for the format string No 3
3997(i) New 28.5.1 [format.syn] std::formatter specializations should be consistently restricted to supported character types No 4
3641(i) New 28.5.1 [format.syn] Add operator== to format_to_n_result Yes 3
3243(i) C++20 28.5.2 [format.string] std::format and negative zeroes Yes 2
3251(i) C++20 28.5.2 [format.string] Are std::format alignment specifiers applied to string arguments? Yes 2
3939(i) New 28.5.2.2 [format.string.std] §[format.string.std] char is not formatted as a character when charT is wchar_t No 3
3644(i) New 28.5.2.2 [format.string.std] std::format does not define "integer presentation type" Yes 2
3586(i) New 28.5.2.2 [format.string.std] Formatting character alignment inconsistencies Yes 2
4090(i) SG16 28.5.2.2 [format.string.std] Underspecified use of locale facets for locale-dependent std::format No 3
3612(i) C++23 28.5.2.2 [format.string.std] Inconsistent pointer alignment in std::format Yes
3648(i) C++23 28.5.2.2 [format.string.std] format should not print bool with 'c' Yes
3720(i) C++23 28.5.2.2 [format.string.std] Restrict the valid types of arg-id for width and precision in std-format-spec Yes 2
3721(i) C++23 28.5.2.2 [format.string.std] Allow an arg-id with a value of zero for width in std-format-spec Yes 3
3242(i) C++20 28.5.2.2 [format.string.std] std::format: missing rules for arg-id in width and precision Yes 1
3248(i) C++20 28.5.2.2 [format.string.std] std::format #b, #B, #o, #x, and #X presentation types misformat negative numbers Yes 2
3250(i) C++20 28.5.2.2 [format.string.std] std::format: # (alternate form) for NaN and inf Yes 0
3290(i) C++20 28.5.2.2 [format.string.std] Are std::format field widths code units, code points, or something else? Yes
3327(i) C++20 28.5.2.2 [format.string.std] Format alignment specifiers vs. text direction Yes 0
3412(i) Resolved 28.5.2.2 [format.string.std] §[format.string.std] references to "Unicode encoding" unclear Yes 3
3576(i) Resolved 28.5.2.2 [format.string.std] Clarifying fill character in std::format Yes 2
3639(i) Resolved 28.5.2.2 [format.string.std] Handling of fill character width is underspecified in std::format Yes 3
3780(i) Resolved 28.5.2.2 [format.string.std] format's width estimation is too approximate and not forward compatible Yes 3
4078(i) New 28.5.5 [format.functions] What if arguments alias the output buffer in std::format_to? No
35