| Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates |
|---|
| 3105(i) | New | 16 [library] | T1 is convertible toT2 | 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 upEffects andReturns 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] | Replacethrow() withnoexcept | Yes | | 1351 |
| 1345(i) | Resolved | 16 [library] | Library classes should havenoexcept move operations | Yes | | |
| 1346(i) | Resolved | 16 [library] | Applynoexcept where library specification does not permit exceptions | Yes | | 1352 |
| 1347(i) | Resolved | 16 [library] | Applynoexcept judiciously throughout the library | Yes | | |
| 1353(i) | Resolved | 16 [library] | Clarify the state of amoved-from object | Yes | | |
| 972(i) | NAD Editorial | 16 [library] | The term "Assignable" undefined but still in use | Yes | | |
| 1232(i) | NAD Editorial | 16 [library] | Stillswap's with rvalue-references | Yes | | |
| 877(i) | NAD | 16 [library] | tothrow() or toThrow: 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 beexplicit 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 withnoexcept | Yes | | 1344 |
| 1352(i) | Dup | 16 [library] | Applynoexcept 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 conceptsis 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: andExpects: 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] | newRemark 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 andnoexcept for operators for bitmask types | Yes | 3 | |
| 3092(i) | Open | 16.3.3.3.3 [bitmask.types] | Unclear semantics ofenum 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 satisfysemiregular | 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.7 [freestanding.item] | Clarify entity vs. freestanding entity | Yes | 2 | |
| 3815(i) | Resolved | 16.3.3.7 [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-likestd::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 namespacestd 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> providelong ::abs(long) andlong 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 aboutterminate | 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> tofreestanding 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 ofstd::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 | |
| 4317(i) | Voting | 16.4.4.2 [utility.arg.requirements] | The meaning of "resource" in theCpp17Destructible requirements is undefined | Yes | | |
| 2146(i) | Open | 16.4.4.2 [utility.arg.requirements] | Are reference typesCopyConstructible/MoveConstructible/CopyAssignable/MoveAssignable/Destructible? | No | 3 | |
| 2170(i) | C++17 | 16.4.4.2 [utility.arg.requirements] | Aggregates cannot beDefaultConstructible | 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 forMove/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 definingSwappable in terms ofCopyConstructible andAssignable | Yes | | |
| 742(i) | Resolved | 16.4.4.2 [utility.arg.requirements] | Enablingswap for proxy iterators | Yes | | |
| 1283(i) | Resolved | 16.4.4.2 [utility.arg.requirements] | MoveConstructible andMoveAssignable need clarificationof moved-from state | Yes | | |
| 1322(i) | Resolved | 16.4.4.2 [utility.arg.requirements] | ExplicitCopyConstructible 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 longerCopyConstructible | 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 tobool" requirements | Yes | 3 | |
| 4296(i) | New | 16.4.4.5 [hash.requirements] | Clarify that Cpp17Hash does not imply stateless | No | 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 ofmax_size() for an allocator | Yes | 3 | |
| 3267(i) | New | 16.4.4.6 [allocator.requirements] | Rebound allocators andis_always_equal | Yes | 4 | |
| 3157(i) | New | 16.4.4.6 [allocator.requirements] | Allocatordestroy 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-throwswappable | Yes | 2 | |
| 2260(i) | C++17 | 16.4.4.6 [allocator.requirements] | Missing requirement forAllocator::pointer | Yes | 3 | |
| 2384(i) | C++17 | 16.4.4.6 [allocator.requirements] | Allocator'sdeallocate function needs better specification | Yes | 3 | |
| 2447(i) | C++17 | 16.4.4.6 [allocator.requirements] | Allocators andvolatile-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'sdestroy 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 includeCopyConstructible | Yes | | |
| 2147(i) | C++14 | 16.4.4.6 [allocator.requirements] | Unclear hint type inAllocator'sallocate function | Yes | | |
| 2162(i) | C++14 | 16.4.4.6 [allocator.requirements] | allocator_traits::max_size missingnoexcept | 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 doesallocate(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 ofallocator::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 theallocator requirements | Yes | | 1318 |
| 4258(i) | New | 16.4.4.6.1 [allocator.requirements.general] | Size type mismatch in constraints involvingCpp17Allocator | No | 4 | |
| 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] | ACpp17Allocator 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 theCpp17Allocator 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 forstd::swap should not be supported | No | 4 | |
| 3926(i) | New | 16.4.5.2.1 [namespace.std] | Which namespacestd 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 auser-defined type? | Yes | 4 | |
| 2129(i) | C++17 | 16.4.5.2.1 [namespace.std] | User specializations ofstd::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 namespaceposix 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 | | |
| 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 namedexpects orensures | 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 | | |
| 4149(i) | Resolved | 16.4.5.3.3 [macro.names] | User defined macros without standard headers (294 redux) | 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 | 3 | |
| 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 onvolatile 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 addfinal to non-polymorphic components? | Yes | | |
| 2373(i) | NAD | 16.4.6 [conforming] | Make new entities and names in namespacestd 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 | | |
| 4306(i) | New | 16.4.6.5 [member.functions] | Interaction between LWG 2259 andConstraints of member functions | No | 3 | |
| 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 addconstexpr? | Yes | | |
| 2892(i) | NAD | 16.4.6.7 [constexpr.functions] | Relax the prohibition on libraries addingconstexpr | 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 | |
| 4129(i) | New | 16.4.6.10 [res.on.data.races] | Possibly incorrect wording for data race avoidance | Yes | 3 | |
| 4145(i) | New | 16.4.6.10 [res.on.data.races] | Unclear how [res.on.data.races] apply to templated functions | No | 3 | |
| 1526(i) | Resolved | 16.4.6.10 [res.on.data.races] | C++ should not impose thread safety requirements on C99 library implementations | Yes | 3 | |
| 4252(i) | New | 16.4.6.13 [derivation] | Are exposition-only classes considered specified for the purpose offinal? | Yes | 3 | |
| 2866(i) | C++17 | 16.4.6.13 [derivation] | Incorrect derived classes constraints | Yes | | |
| 3854(i) | New | 16.4.6.14 [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.14 [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.14 [res.on.exception.handling] | Should virtual functions be allowed to strengthen the exception specification? | Yes | | |
| 2867(i) | Resolved | 16.4.6.14 [res.on.exception.handling] | Bad footnote about explicit exception-specification | Yes | | |
| 372(i) | NAD | 16.4.6.14 [res.on.exception.handling] | Inconsistent description of stdlib exceptions | Yes | | |
| 2839(i) | C++23 | 16.4.6.17 [lib.types.movedfrom] | Self-move-assignment of library types, again | Yes | 2 | |
| 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 markednoexcept | 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 andnullptr | Yes | | |
| 2251(i) | NAD | 17.2 [support.types] | C++ library should definessize_t | Yes | 3 | |
| 4182(i) | New | 17.2.3 [support.types.nullptr] | Definition ofNULL is too broad | 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 forconstexpr 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 | |
| 4286(i) | Voting | 17.3.2 [version.syn] | Some more feature-test macros for fully freestanding features are not marked freestanding | Yes | | |
| 4440(i) | Immediate | 17.3.2 [version.syn] | Forward declarations of entities need also in entries | Yes | | |
| 4411(i) | New | 17.3.2 [version.syn] | Even more feature-test macros for fully freestanding features are not marked freestanding | No | 2 | |
| 3931(i) | New | 17.3.2 [version.syn] | Too many paper bump__cpp_lib_ranges | Yes | 3 | |
| 4189(i) | WP | 17.3.2 [version.syn] | cache_latest_view should be freestanding | Yes | | |
| 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 forallocate_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 forflat_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 forranges::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 whethernumeric_limits can be specialized by users | Yes | 3 | |
| 3923(i) | New | 17.3.5.1 [numeric.limits.general] | The specification ofnumeric_limits doesn't clearly distinguish between implementation requirementsand 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] | Syncintmax_t anduintmax_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 changeintptr_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 beDefaultConstructible | Yes | 2 | |
| 3106(i) | NAD | 17.6.2 [new.syn] | nothrow should beinline constexpr rather thatextern 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 globaloperator 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 ofstd::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 missinghappens-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 forstd::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 ofreachable 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] | Missingnoexcept specification intype_index | Yes | | |
| 1078(i) | NAD Concepts | 17.7.7 [type.index] | DE-17: Remove class type_index | Yes | | |
| 4207(i) | New | 17.8.2.2 [support.srcloc.cons] | Point of reference forsource_location is not specified when used in an default template argument | Yes | 3 | |
| 3396(i) | C++20 | 17.8.2.2 [support.srcloc.cons] | Clarify point of reference forsource_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 ofwhat() 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] | Whichunexpected/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 anexception_ptr? | Yes | | |
| 746(i) | CD1 | 17.9.7 [propagation] | current_exception may fail withbad_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 tobool | Yes | | |
| 1307(i) | Resolved | 17.9.7 [propagation] | exception_ptr andallocator pointers don't understand != | Yes | | |
| 1364(i) | Resolved | 17.9.7 [propagation] | It is not clear howexception_ptr is synchronized | Yes | | |
| 707(i) | NAD | 17.9.7 [propagation] | null pointer constant forexception_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 useis_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 ofnested_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.11 [support.initlist] | §[iterator.range] and now [iterator.container] aren't available via<initializer_list> | No | 3 | |
| 2493(i) | New | 17.11 [support.initlist] | initializer_list supports incomplete classes | No | 4 | |
| 2432(i) | NAD | 17.11 [support.initlist] | initializer_list assignability | Yes | 2 | |
| 906(i) | NAD Concepts | 17.11 [support.initlist] | ObjectType is the wrong concept to constraininitializer_list | Yes | | |
| 4051(i) | New | 17.12.2 [cmp.categories] | A less hacky and more useful way to compare comparison category types | Yes | 3 | |
| 3295(i) | Resolved | 17.12.2 [cmp.categories] | Comparison categoryoperator== are mis-specified | Yes | 1 | |
| 3239(i) | Resolved | 17.12.2.2 [cmp.partialord] | Hidden friends should be specified more narrowly | Yes | | |
| 3584(i) | New | 17.12.3 [cmp.common] | Clarify common comparison category conversions | Yes | 3 | |
| 3587(i) | New | 17.12.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.12.4 [cmp.concept] | three_way_comparable_with is inconsistent with similar concepts | Yes | 0 | |
| 3932(i) | New | 17.12.6 [cmp.alg] | Expression-equivalence is sometimes unimplementable when passing prvalue expressions to comparison CPOs | No | 3 | |
| 3491(i) | New | 17.12.6 [cmp.alg] | What is a "decayed type"? | No | 3 | |
| 4157(i) | WP | 17.12.6 [cmp.alg] | The resolution of LWG3465 was damaged by P2167R3 | Yes | | |
| 3465(i) | C++23 | 17.12.6 [cmp.alg] | compare_partial_order_fallback requiresF < E | Yes | 0 | |
| 3324(i) | C++20 | 17.12.6 [cmp.alg] | Special-casestd::strong/weak/partial_order for pointers | Yes | 0 | |
| 4305(i) | Voting | 17.12.7 [compare.type] | Missing user requirements ontype_order template | Yes | | |
| 3653(i) | New | 17.13.2 [coroutine.syn] | <coroutine> is freestanding, but usesstd::hash which is not | No | 3 | |
| 3330(i) | C++20 | 17.13.2 [coroutine.syn] | Include<compare> from most library headers | Yes | 0 | |
| 3469(i) | Resolved | 17.13.4.7 [coroutine.handle.promise] | Precondition ofcoroutine_handle::promise may be insufficient | Yes | 2 | |
| 3460(i) | C++23 | 17.13.5.2.4 [coroutine.handle.noop.resumption] | Unimplementablenoop_coroutine_handle guarantees | Yes | 2 | |
| 2099(i) | C++14 | 17.14 [support.runtime] | Unnecessary constraints ofva_start() usage | Yes | | |
| 894(i) | C++11 | 17.14 [support.runtime] | longjmp and destructors | Yes | | |
| 619(i) | CD1 | 17.14 [support.runtime] | Longjmp wording problem | Yes | | |
| 2155(i) | Resolved | 17.14 [support.runtime] | Macro__bool_true_false_are_defined should be removed | Yes | 4 | |
| 2241(i) | Resolved | 17.14 [support.runtime] | <cstdalign> and#define ofalignof | Yes | 2 | |
| 1265(i) | NAD | 17.14 [support.runtime] | longjmp and destructors | Yes | | |
| 4388(i) | Immediate | 17.14.2 [cstdarg.syn] | Align new definition ofva_start with C23 | Yes | 1 | |
| 3945(i) | New | 17.14.2 [cstdarg.syn] | §[cstdarg.syn] 'Compatible types' are undefined | No | 3 | |
| 3652(i) | NAD | 17.14.3 [csetjmp.syn] | Can we relax the preconditions oflongjmp? | Yes | | |
| 2879(i) | Resolved | 17.14.4 [csignal.syn] | Removing C dependencies from signal handler wording | Yes | | |
| 3756(i) | C++23 | 17.14.5 [support.signal] | Is thestd::atomic_flag class signal-safe? | Yes | 3 | |
| 2536(i) | C++17 | 17.15 [support.c.headers] | What should<complex.h> do? | Yes | 2 | |
| 2835(i) | C++17 | 17.15 [support.c.headers] | LWG 2536 seems to misspecify<tgmath.h> | Yes | 0 | |
| 551(i) | CD1 | 17.15 [support.c.headers] | <ccomplex> | Yes | | |
| 143(i) | NAD | 17.15 [support.c.headers] | C .h header wording unclear | Yes | | |
| 3954(i) | New | 17.15.1 [support.c.headers.general] | Feature-test macros in C headers (<stddef.h> etc.) | No | 3 | |
| 3827(i) | C++23 | 17.15.4 [stdalign.h.syn] | Deprecate<stdalign.h> and<stdbool.h> macros | Yes | | |
| 3883(i) | New | 17.15.7 [support.c.headers.other] | §[support.c.headers.other] Ambiguity in the requirements for includes | Yes | 4 | |
| 3799(i) | New | 17.15.7 [support.c.headers.other] | Should<math.h> provide 3-argument::hypot overloads? | No | 3 | |
| 3484(i) | New | 17.15.7 [support.c.headers.other] | Should<stddef.h> declare::nullptr_t? | Yes | 3 | |
| 3782(i) | C++23 | 17.15.7 [support.c.headers.other] | Should<math.h> declare::lerp? | Yes | | |
| Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates |
|---|
| 1073(i) | C++11 | 20.2 [memory] | Declaration ofallocator_arg should beconstexpr | Yes | | |
| 1401(i) | C++11 | 20.2 [memory] | Provide support forunique_ptr<T> == nullptr | Yes | | |
| 1402(i) | C++11 | 20.2 [memory] | nullptr constructors for smart pointers should beconstexpr | Yes | | |
| 1233(i) | NAD Editorial | 20.2 [memory] | Missingunique_ptr signatures in synopsis | Yes | | |
| 1026(i) | NAD Concepts | 20.2 [memory] | Smart pointers need to be concept-constrained templates | Yes | | |
| 4431(i) | New | 20.2.2 [memory.syn] | Parallelstd::ranges::destroy should allow exceptions | 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 fordestroy/destroy_n | Yes | 0 | |
| 3454(i) | Immediate | 20.2.3 [pointer.traits] | pointer_traits::pointer_to should beconstexpr | Yes | 4 | |
| 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 asize_type member | Yes | | |
| 4058(i) | LEWG | 20.2.4 [pointer.conversion] | std::to_address() should be SFINAE-friendly | Yes | 3 | |
| 3374(i) | C++20 | 20.2.4 [pointer.conversion] | P0653 + P1006 should have made the otherstd::to_address overloadconstexpr | Yes | 0 | |
| 4290(i) | New | 20.2.5 [ptr.align] | MissingMandates clauses onis_sufficiently_aligned | Yes | 2 | |
| 2421(i) | New | 20.2.5 [ptr.align] | Non-specification of handling zero size instd::align [ptr.align] | No | 3 | |
| 2377(i) | C++17 | 20.2.5 [ptr.align] | std::align requirements overly strict | Yes | 0 | |
| 4283(i) | New | 20.2.6 [obj.lifetime] | std::trivially_relocate needs stronger preconditions on "nested" objects with dynamic lifetime | Yes | 2 | |
| 4168(i) | New | 20.2.6 [obj.lifetime] | std::start_lifetime_as inadvertently has undefined behavior due to use ofstd::bit_cast | Yes | 3 | |
| 4282(i) | New | 20.2.6 [obj.lifetime] | ImpreciseThrows: clause instd::relocate | Yes | 2 | |
| 1403(i) | C++11 | 20.2.7 [allocator.tag] | Inconsistent definitions forallocator_arg | Yes | | |
| 3901(i) | NAD | 20.2.8 [allocator.uses] | Is uses-allocator construction of acv-qualified object type still well-formed after LWG 3870? | Yes | | |
| 4312(i) | Voting | 20.2.8.2 [allocator.uses.construction] | Const and value category mismatch forallocator_arg_t/allocator_arg in the description of uses-allocator construction | Yes | | |
| 3192(i) | New | 20.2.8.2 [allocator.uses.construction] | §[allocator.uses.construction] functions misbehave forconst types | Yes | 3 | |
| 3525(i) | C++23 | 20.2.8.2 [allocator.uses.construction] | uses_allocator_construction_args fails to handle types convertible topair | Yes | 3 | |
| 3526(i) | C++23 | 20.2.8.2 [allocator.uses.construction] | Return types ofuses_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 acv-qualifiedpair 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 forpair-like | Yes | 2 | |
| 3185(i) | C++20 | 20.2.8.2 [allocator.uses.construction] | Uses-allocator construction functions missingconstexpr andnoexcept | Yes | 0 | |
| 3187(i) | C++20 | 20.2.8.2 [allocator.uses.construction] | P0591R4 reverted DR 2586 fixes toscoped_allocator_adaptor::construct() | Yes | | |
| 3321(i) | C++20 | 20.2.8.2 [allocator.uses.construction] | uninitialized_construct_using_allocator should useconstruct_at | Yes | 0 | |
| 2284(i) | C++14 | 20.2.9 [allocator.traits] | Inconsistency inallocator_traits::max_size | Yes | | |
| 3665(i) | New | 20.2.9.2 [allocator.traits.types] | Isstd::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 tonew | 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 forbidcv-qualified types | No | 3 | |
| 3917(i) | New | 20.2.10 [default.allocator] | Validity ofallocator<void> and possiblypolymorphic_allocator<void> should be clarified | Yes | 3 | |
| 3170(i) | C++23 | 20.2.10 [default.allocator] | is_always_equal added tostd::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 beconstexpr | 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 overloadingoperator& | 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 beconstexpr | 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 defineoperator<< 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 acceptT* | 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 forunique_ptr<T>::get_deleter()(p) to be able to destroy theunique_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] | Disallowunique_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 ofunique_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 ofunique_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 whenD 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 tounique_ptr conversion | Yes | | |
| 3164(i) | NAD | 20.3.1.3.2 [unique.ptr.single.ctor] | Unhelpful "shall not participate" constraints forunique_ptr with reference deleter | Yes | | |
| 3455(i) | C++23 | 20.3.1.3.4 [unique.ptr.single.asgn] | IncorrectPostconditions onunique_ptr move assignment | Yes | 0 | |
| 2047(i) | C++14 | 20.3.1.3.4 [unique.ptr.single.asgn] | Incorrect "mixed" move-assignment semantics ofunique_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] | Allownullptr_t assignments tounique_ptr | Yes | | |
| 2228(i) | Resolved | 20.3.1.3.4 [unique.ptr.single.asgn] | MissingSFINAE rule inunique_ptr templated assignment | Yes | 3 | |
| 4324(i) | New | 20.3.1.3.5 [unique.ptr.single.observers] | unique_ptr<void>::operator* is not SFINAE-friendly | Yes | 3 | |
| 3911(i) | New | 20.3.1.3.5 [unique.ptr.single.observers] | unique_ptr'soperator* 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 benoexcept | Yes | 3 | |
| 686(i) | NAD | 20.3.1.3.5 [unique.ptr.single.observers] | unique_ptr andshared_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 supportcv 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 ofunspecified-pointer-type | Yes | | |
| 2060(i) | NAD Editorial | 20.3.1.4 [unique.ptr.runtime] | unique_ptr<T[]>(nullptr_t) missingnoexcept | Yes | | |
| 2520(i) | C++17 | 20.3.1.4.2 [unique.ptr.runtime.ctor] | N4089 broke initializingunique_ptr<T[]> from anullptr | Yes | 2 | |
| 2169(i) | C++14 | 20.3.1.4.5 [unique.ptr.runtime.modifiers] | Missingreset() requirements inunique_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 emptyshared_ptr onshared_ptr(nullptr, d) | Yes | 3 | |
| 2996(i) | C++20 | 20.3.2.2 [util.smartptr.shared] | Missing rvalue overloads forshared_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] | Addnoexcept to severalshared_ptr related functions | Yes | | |
| 2365(i) | C++17 | 20.3.2.2 [util.smartptr.shared] | Missingnoexcept inshared_ptr::shared_ptr(nullptr_t) | Yes | | |
| 2411(i) | C++17 | 20.3.2.2 [util.smartptr.shared] | shared_ptr is only contextually convertible tobool | Yes | 0 | |
| 758(i) | C++11 | 20.3.2.2 [util.smartptr.shared] | shared_ptr andnullptr | 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 forshared_ptr | Yes | | |
| 2810(i) | Resolved | 20.3.2.2 [util.smartptr.shared] | use_count andunique inshared_ptr | Yes | | |
| 2864(i) | Resolved | 20.3.2.2 [util.smartptr.shared] | Mergeshared_ptr changes from Library Fundamentals to C++17 | Yes | | |
| 1406(i) | NAD | 20.3.2.2 [util.smartptr.shared] | Support hashing smart-pointers based onowner | Yes | | |
| 1031(i) | NAD | 20.3.2.2 [util.smartptr.shared] | Needshared_ptr conversion to aunique_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 | 3 | |
| 4032(i) | New | 20.3.2.2.2 [util.smartptr.shared.const] | Possibly invalid types in the constraints of constructors ofstd::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 ashared_ptr from aunique_ptr | No | 3 | |
| 3548(i) | C++23 | 20.3.2.2.2 [util.smartptr.shared.const] | shared_ptr construction fromunique_ptr should move (not copy) the deleter | Yes | | |
| 3233(i) | C++20 | 20.3.2.2.2 [util.smartptr.shared.const] | Broken requirements forshared_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] | Constructorshared_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 fromunique_ptr should be constrained | Yes | 0 | |
| 2415(i) | C++17 | 20.3.2.2.2 [util.smartptr.shared.const] | Inconsistency betweenunique_ptr andshared_ptr | Yes | 2 | |
| 2495(i) | C++17 | 20.3.2.2.2 [util.smartptr.shared.const] | There is no such thing as anException 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 fromunique_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] | Synchshared_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 expiredweak_ptr instances | No | 4 | |
| 899(i) | C++11 | 20.3.2.2.3 [util.smartptr.shared.dest] | Adjustingshared_ptr fornullptr_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 ashared_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 forshared_ptr::operator* should apply tocv-qualifiedvoid as well | Yes | 0 | |
| 711(i) | C++11 | 20.3.2.2.6 [util.smartptr.shared.obs] | Contradiction in emptyshared_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() anduse_count() | Yes | 2 | |
| 2337(i) | NAD | 20.3.2.2.6 [util.smartptr.shared.obs] | shared_ptr operator*() should not benoexcept | Yes | 2 | |
| 4451(i) | New | 20.3.2.2.7 [util.smartptr.shared.create] | make_shared should not refer to a typeU[N] for runtime N | Yes | | |
| 3210(i) | New | 20.3.2.2.7 [util.smartptr.shared.create] | allocate_shared is inconsistent about removingconst from the pointerpassed to allocatorconstruct anddestroy | Yes | 3 | |
| 3216(i) | WP | 20.3.2.2.7 [util.smartptr.shared.create] | Rebinding the allocator before callingconstruct/destroy inallocate_shared | Yes | 3 | |
| 4024(i) | WP | 20.3.2.2.7 [util.smartptr.shared.create] | Underspecified destruction of objects created instd::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 bymake_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 tocv-unqualifiedvalue_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 betweenmake_shared andenable_shared_from_this is underspecified | Yes | 2 | |
| 2070(i) | Resolved | 20.3.2.2.7 [util.smartptr.shared.create] | allocate_shared should useallocator_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] | rvalueswap forshared_ptr | Yes | | |
| 2964(i) | C++20 | 20.3.2.2.10 [util.smartptr.shared.cast] | Apparently redundant requirement fordynamic_pointer_cast | Yes | 0 | |
| 2877(i) | Resolved | 20.3.2.2.10 [util.smartptr.shared.cast] | Strengthen meaning of "emptyshared_ptr<T>" indynamic_pointer_cast | Yes | | |
| 2400(i) | C++17 | 20.3.2.2.11 [util.smartptr.getdeleter] | shared_ptr'sget_deleter() should useaddressof() | 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-incorrectget_deleter function forshared_ptr | Yes | | |
| 3001(i) | C++20 | 20.3.2.3 [util.smartptr.weak] | weak_ptr::element_type needsremove_extent_t | Yes | 0 | |
| 2083(i) | C++14 | 20.3.2.3 [util.smartptr.weak] | const-qualification onweak_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 emptyweak_ptr? | Yes | 2 | |
| 2942(i) | C++20 | 20.3.2.3.6 [util.smartptr.weak.obs] | LWG 2873's resolution missedweak_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 toenable_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 ininout_ptr andout_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 — inconsistentrelease() in destructor | Yes | 1 | |
| 4322(i) | New | 20.4 [mem.composite.types] | ProblematicConstraints on incomplete types in indirect and polymorphic | Yes | 2 | |
| 4251(i) | Immediate | 20.4.1.5 [indirect.assign] | Move assignment forindirect unnecessarily requires copy construction | Yes | 1 | |
| 4250(i) | LEWG | 20.4.1.7 [indirect.swap] | swap overloads forindirect andpolymorphic only found by ADL | Yes | 2 | |
| 4325(i) | New | 20.4.1.8 [indirect.relops] | std::indirect'soperator== still does not support incomplete types | Yes | 2 | |
| 3471(i) | C++23 | 20.5 [mem.res] | polymorphic_allocator::allocate does not satisfyCpp17Allocator requirements | Yes | 3 | |
| 2700(i) | NAD | 20.5 [mem.res] | resource_adaptor went missing | Yes | 1 | |
| 3681(i) | New | 20.5.1 [mem.res.syn] | Further considerations on LWG 3679 (usingpmr::vector without including<memory_resource>) | No | 4 | |
| 3637(i) | New | 20.5.2 [mem.res.class] | pmr::memory_resource::do_allocate needs clarification | No | 3 | |
| 2724(i) | C++17 | 20.5.2 [mem.res.class] | The protected virtual member functions ofmemory_resource should be private | Yes | 4 | |
| 2843(i) | C++20 | 20.5.2.3 [mem.res.private] | Unclear behavior ofstd::pmr::memory_resource::do_allocate() | Yes | 3 | |
| 2701(i) | NAD Editorial | 20.5.2.3 [mem.res.private] | Unclear requirement in [memory.resource.private] | Yes | 3 | |
| 3036(i) | C++23 | 20.5.3 [mem.poly.allocator.class] | polymorphic_allocator::destroy is extraneous | Yes | 3 | |
| 3683(i) | C++23 | 20.5.3 [mem.poly.allocator.class] | operator== forpolymorphic_allocator cannot deduce template argument in common cases | Yes | | |
| 3037(i) | C++20 | 20.5.3 [mem.poly.allocator.class] | polymorphic_allocator and incomplete types | Yes | 2 | |
| 3304(i) | C++20 | 20.5.3 [mem.poly.allocator.class] | Allocate functions ofstd::polymorphic_allocator should require[[nodiscard]] | Yes | 3 | |
| 3312(i) | Dup | 20.5.3 [mem.poly.allocator.class] | polymorphic_allocator::allocate_object andnew_object should be[[nodiscard]] | Yes | | |
| 4311(i) | New | 20.5.3.3 [mem.poly.allocator.mem] | Canstd::pmr::polymorphic_allocator::construct just callstd::uninitialized_construct_using_allocator? | Yes | 3 | |
| 2969(i) | C++20 | 20.5.3.3 [mem.poly.allocator.mem] | polymorphic_allocator::construct() shouldn't passresource() | Yes | 2 | |
| 2975(i) | C++20 | 20.5.3.3 [mem.poly.allocator.mem] | Missing case forpair construction in scoped and polymorphic allocators | Yes | 3 | |
| 3038(i) | C++20 | 20.5.3.3 [mem.poly.allocator.mem] | polymorphic_allocator::allocate should not allow integer overflow to create vulnerabilities | Yes | 2 | |
| 3237(i) | C++20 | 20.5.3.3 [mem.poly.allocator.mem] | LWG 3038 and 3190 have inconsistent PRs | Yes | 2 | |
| 3310(i) | C++20 | 20.5.3.3 [mem.poly.allocator.mem] | ReplaceSIZE_MAX withnumeric_limits<size_t>::max() | Yes | 0 | |
| 3113(i) | Resolved | 20.5.3.3 [mem.poly.allocator.mem] | polymorphic_allocator::construct() should more closely matchscoped_allocator_adaptor::construct() | Yes | 3 | |
| 3634(i) | New | 20.5.4 [mem.res.global] | When are static-durationmemory_resource objects destroyed? | No | 3 | |
| 2961(i) | C++20 | 20.5.4 [mem.res.global] | Bad postcondition forset_default_resource | Yes | | |
| 2848(i) | New | 20.5.5.2 [mem.res.pool.options] | Pass-through threshold for pool allocator | No | 3 | |
| 3143(i) | C++23 | 20.5.6 [mem.res.monotonic.buffer] | monotonic_buffer_resource growth policy is unclear | Yes | 2 | |
| 3120(i) | C++23 | 20.5.6.3 [mem.res.monotonic.buffer.mem] | Unclear behavior ofmonotonic_buffer_resource::release() | Yes | 2 | |
| 3000(i) | C++20 | 20.5.6.3 [mem.res.monotonic.buffer.mem] | monotonic_memory_resource::do_is_equal usesdynamic_cast unnecessarily | Yes | 0 | |
| 1316(i) | C++11 | 20.6 [allocator.adaptor] | scoped_allocator_adaptor operator== has no definition | Yes | | |
| 1405(i) | Resolved | 20.6 [allocator.adaptor] | Movescoped_allocator_adaptor into separate header | Yes | | |
| 2476(i) | C++17 | 20.6.1 [allocator.adaptor.syn] | scoped_allocator_adaptor is not assignable | Yes | 0 | |
| 2782(i) | C++17 | 20.6.3 [allocator.adaptor.cnstr] | scoped_allocator_adaptor constructors must be constrained | Yes | 0 | |
| 3116(i) | C++20 | 20.6.4 [allocator.adaptor.members] | OUTERMOST_ALLOC_TRAITS needsremove_reference_t | Yes | 0 | |
| 2586(i) | C++17 | 20.6.4 [allocator.adaptor.members] | Wrong value category used inscoped_allocator_adaptor::construct() | Yes | 0 | |
| 2203(i) | C++14 | 20.6.4 [allocator.adaptor.members] | scoped_allocator_adaptor uses wrong argument types for piecewise construction | Yes | | |
| 2511(i) | Resolved | 20.6.4 [allocator.adaptor.members] | scoped_allocator_adaptor piecewise construction does not requireCopyConstructible | Yes | 3 | |
| 1321(i) | Resolved | 20.6.4 [allocator.adaptor.members] | scoped_allocator_adaptor construct anddestroy don'tuseallocator_traits | Yes | | |
| 2717(i) | NAD | 20.6.4 [allocator.adaptor.members] | scoped_allocator_adaptor usesforward to domove's job | Yes | | |
| 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 tois_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 returndecltype(auto) and usedecay_t beforetuple_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 andaligned_storage do not meet the definition ofTransformationTrait | No | 3 | |
| 2514(i) | C++17 | 21.3.2 [meta.rqmts] | Type traits must not befinal | Yes | 3 | |
| 3099(i) | Open | 21.3.3 [meta.type.synop] | is_assignable<Incomplete&, Incomplete&> | Yes | 2 | |
| 2939(i) | Open | 21.3.3 [meta.type.synop] | Some type-completeness constraints of traits are overspecified | Yes | 2 | |
| 2581(i) | C++17 | 21.3.3 [meta.type.synop] | Specialization of<type_traits> variable templates should be prohibited | Yes | 0 | |
| 2922(i) | Resolved | 21.3.3 [meta.type.synop] | The*_constant<> templates do not make use oftemplate<auto> | Yes | | |
| 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 foris_callable andresult_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 andintegral_constant | Yes | | |
| 2346(i) | C++14 | 21.3.4 [meta.help] | integral_constant's member functions should be markednoexcept | Yes | 0 | |
| 1019(i) | C++11 | 21.3.4 [meta.help] | Makeintegral_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 templateintegral_constant should be a constrained template | Yes | | |
| 4383(i) | New | 21.3.5 [const.wrap.class] | constant_wrapper's pseudo-mutators are underconstrained | Yes | 1 | |
| 2015(i) | C++14 | 21.3.6 [meta.unary] | Incorrect pre-conditions for some type traits | Yes | | |
| 525(i) | Resolved | 21.3.6 [meta.unary] | type traits definitions not clear | Yes | | |
| 1392(i) | Resolved | 21.3.6 [meta.unary] | result_of should support pointer-to-data-member | Yes | | |
| 2247(i) | C++14 | 21.3.6.2 [meta.unary.cat] | Type traits andstd::nullptr_t | Yes | | |
| 3967(i) | New | 21.3.6.4 [meta.unary.prop] | The specification forstd::is_nothrow_* traits may be ambiguous in some cases involvingnoexcept(false) | Yes | 3 | |
| 3929(i) | New | 21.3.6.4 [meta.unary.prop] | Preconditions for type traits should beMandates | Yes | 3 | |
| 2827(i) | New | 21.3.6.4 [meta.unary.prop] | is_trivially_constructible and non-trivial destructors | No | 3 | |
| 3697(i) | New | 21.3.6.4 [meta.unary.prop] | Preconditions ofreference_constructs_from_temporary/reference_converts_from_temporary seem wrong | Yes | 3 | |
| 2496(i) | New | 21.3.6.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.6.4 [meta.unary.prop] | is_nothrow_constructible and destructors | No | 3 | |
| 2358(i) | Open | 21.3.6.4 [meta.unary.prop] | Apparently-bogus definition ofis_empty type trait | Yes | 3 | |
| 2077(i) | Open | 21.3.6.4 [meta.unary.prop] | Further incomplete constraints for type traits | No | 3 | |
| 3486(i) | LEWG | 21.3.6.4 [meta.unary.prop] | is_constructible<T[], T...> may be misleading in C++20 | No | 4 | |
| 4113(i) | WP | 21.3.6.4 [meta.unary.prop] | Disallowhas_unique_object_representations<Incomplete[]> | Yes | | |
| 3819(i) | C++23 | 21.3.6.4 [meta.unary.prop] | reference_meows_from_temporary should not useis_meowible | Yes | | |
| 3823(i) | C++23 | 21.3.6.4 [meta.unary.prop] | Unnecessary precondition foris_aggregate | Yes | | |
| 2972(i) | C++20 | 21.3.6.4 [meta.unary.prop] | What isis_trivially_destructible_v<int>? | Yes | | |
| 3354(i) | C++20 | 21.3.6.4 [meta.unary.prop] | has_strong_structural_equality has a meaningless definition | Yes | 1 | |
| 2911(i) | C++17 | 21.3.6.4 [meta.unary.prop] | Anis_aggregate type trait is needed | Yes | | |
| 2336(i) | C++17 | 21.3.6.4 [meta.unary.prop] | is_trivially_constructible/is_trivially_assignable traits are always false | Yes | 3 | |
| 2367(i) | C++17 | 21.3.6.4 [meta.unary.prop] | pair andtuple are not correctly implemented foris_constructible with no args | Yes | 3 | |
| 2560(i) | C++17 | 21.3.6.4 [meta.unary.prop] | is_constructible underspecified when applied to a function type | Yes | 0 | |
| 2738(i) | C++17 | 21.3.6.4 [meta.unary.prop] | is_constructible withvoid types | Yes | | |
| 2049(i) | C++14 | 21.3.6.4 [meta.unary.prop] | is_destructible is underspecified | Yes | | |
| 2196(i) | C++14 | 21.3.6.4 [meta.unary.prop] | Specification ofis_*[copy/move]_[constructible/assignable] unclear for non-referencable types | Yes | | |
| 2197(i) | C++14 | 21.3.6.4 [meta.unary.prop] | Specification ofis_[un]signed unclear for non-arithmetic types | Yes | | |
| 2298(i) | C++14 | 21.3.6.4 [meta.unary.prop] | [CD]is_nothrow_constructible is always false because ofcreate<> | Yes | | |
| 931(i) | C++11 | 21.3.6.4 [meta.unary.prop] | type traitextent<T, I> | Yes | | |
| 1131(i) | C++11 | 21.3.6.4 [meta.unary.prop] | C++0x does not needalignment_of | Yes | | |
| 749(i) | CD1 | 21.3.6.4 [meta.unary.prop] | Currentlyhas_nothrow_copy_constructor<T>::value is true ifT has 'a' nothrow copy constructor. | Yes | | |
| 1174(i) | Resolved | 21.3.6.4 [meta.unary.prop] | Type property predicates | Yes | | |
| 1260(i) | Resolved | 21.3.6.4 [meta.unary.prop] | is_constructible<int*,void*> reports true | Yes | | |
| 1393(i) | Resolved | 21.3.6.4 [meta.unary.prop] | Trivial traits implynoexcept | Yes | | |
| 1394(i) | Resolved | 21.3.6.4 [meta.unary.prop] | is_constructible reports false positives | Yes | | |
| 2828(i) | NAD Editorial | 21.3.6.4 [meta.unary.prop] | Clarify<cstdalign> (following adoption of P0063r3) | Yes | | |
| 1239(i) | NAD Editorial | 21.3.6.4 [meta.unary.prop] | Defect report | Yes | | |
| 747(i) | NAD | 21.3.6.4 [meta.unary.prop] | We have 3 separate type traits to identify classes supporting no-throw operations | Yes | | |
| 748(i) | NAD | 21.3.6.4 [meta.unary.prop] | The is_abstract type trait is defined by reference to 10.4. | Yes | | |
| 1228(i) | NAD | 21.3.6.4 [meta.unary.prop] | User-specialized nothrow type traits | Yes | | |
| 2317(i) | C++14 | 21.3.7 [meta.unary.prop.query] | The type property queries should beUnaryTypeTraits returningsize_t | Yes | 0 | |
| 4028(i) | New | 21.3.8 [meta.rel] | std::is_(nothrow_)convertible should be reworded to avoid dependence on thereturn statement | Yes | 2 | |
| 3400(i) | New | 21.3.8 [meta.rel] | Doesis_nothrow_convertible consider destruction of the destination type? | No | 3 | |
| 3174(i) | New | 21.3.8 [meta.rel] | Precondition onis_convertible is too strong | Yes | 3 | |
| 975(i) | C++11 | 21.3.8 [meta.rel] | is_convertible cannot be instantiated for non-convertible types | Yes | | |
| 2895(i) | Resolved | 21.3.8 [meta.rel] | Passing function types toresult_of andis_callable | Yes | | |
| 3022(i) | Resolved | 21.3.8 [meta.rel] | is_convertible<derived*, base*> may lead to ODR | Yes | 2 | |
| 1395(i) | NAD Editorial | 21.3.8 [meta.rel] | Inconsistent reference links should be unified | Yes | | |
| 750(i) | Dup | 21.3.8 [meta.rel] | The current definition foris_convertible requires that the type beimplicitly convertible, so explicit constructors are ignored. | Yes | | 719 |
| 2101(i) | C++17 | 21.3.9 [meta.trans] | Some transformation types can produce impossible types | Yes | 3 | |
| 3205(i) | New | 21.3.9.7 [meta.trans.other] | decay_t in the newcommon_type fallback should beremove_cvref_t | Yes | 3 | |
| 3152(i) | C++23 | 21.3.9.7 [meta.trans.other] | common_type andcommon_reference have flaws in common | Yes | 3 | |
| 2979(i) | C++20 | 21.3.9.7 [meta.trans.other] | aligned_union should require complete object types | Yes | 0 | |
| 3034(i) | C++20 | 21.3.9.7 [meta.trans.other] | P0767R1 breaks previously-standard-layout types | Yes | 0 | |
| 3140(i) | C++20 | 21.3.9.7 [meta.trans.other] | COMMON_REF is unimplementable as specified | Yes | 0 | |
| 3380(i) | C++20 | 21.3.9.7 [meta.trans.other] | common_type and comparison categories | Yes | 0 | |
| 2396(i) | C++17 | 21.3.9.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.9.7 [meta.trans.other] | SFINAE-friendlycommon_type/iterator_traits is missing in C++14 | Yes | | |
| 2460(i) | C++17 | 21.3.9.7 [meta.trans.other] | LWG issue 2408 and value categories | Yes | 2 | |
| 2141(i) | C++14 | 21.3.9.7 [meta.trans.other] | common_type trait produces reference types | Yes | | |
| 1187(i) | C++11 | 21.3.9.7 [meta.trans.other] | std::decay | Yes | | |
| 705(i) | CD1 | 21.3.9.7 [meta.trans.other] | type-traitdecay incompletely specified | Yes | | |
| 856(i) | CD1 | 21.3.9.7 [meta.trans.other] | Removal ofaligned_union | Yes | | |
| 2465(i) | Resolved | 21.3.9.7 [meta.trans.other] | SFINAE-friendlycommon_type is nearly impossible to specializecorrectly and regresses key functionality | Yes | 2 | |
| 2763(i) | Resolved | 21.3.9.7 [meta.trans.other] | common_type_t<void, void> is undefined | Yes | 2 | |
| 1055(i) | Resolved | 21.3.9.7 [meta.trans.other] | Provide a trait that returns the underlying type of an enumeration type | Yes | | |
| 2397(i) | Resolved | 21.3.9.7 [meta.trans.other] | map<K, V>::emplace and explicitV constructors | Yes | 1 | |
| 849(i) | NAD | 21.3.9.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.9.7 [meta.trans.other] | Restorealigned_union | Yes | | |
| 2569(i) | C++17 | 21.3.10 [meta.logical] | conjunction anddisjunction requirements are too strict | Yes | 2 | |
| 2587(i) | C++17 | 21.3.10 [meta.logical] | "Convertible tobool" requirement inconjunction anddisjunction | Yes | 3 | |
| 2557(i) | C++17 | 21.3.10 [meta.logical] | Logical operator traits are broken in the zero-argument case | Yes | 0 | |
| 2567(i) | C++17 | 21.3.10 [meta.logical] | Specification of logical operator traits usesBaseCharacteristic, which is defined only forUnaryTypeTraits andBinaryTypeTraits | Yes | 2 | |
| 4138(i) | New | 21.3.12 [meta.const.eval] | is_within_lifetime should mandateis_object | Yes | 3 | |
| 4416(i) | Voting | 21.4.1 [meta.syn] | <meta> should include<compare> | Yes | | |
| 4432(i) | Immediate | 21.4.3 [meta.define.static] | Clarify element initialization formeta::reflect_constant_array | Yes | | |
| 4435(i) | New | 21.4.6 [meta.reflection.names] | meta::has_identifier doesn't handle all types | Yes | 2 | |
| 4427(i) | Immediate | 21.4.7 [meta.reflection.queries] | meta::dealias needs to work with things that aren't entities | Yes | | |
| 4433(i) | Immediate | 21.4.7 [meta.reflection.queries] | Incorrect query for C language linkage | Yes | | |
| 4437(i) | New | 21.4.7 [meta.reflection.queries] | constant_of(^^v) for variablev of array type produces reflection of pointer constant | Yes | | |
| 4422(i) | Voting | 21.4.8 [meta.reflection.access.context] | meta::access_context should be a consteval-only type | Yes | 2 | |
| 4428(i) | New | 21.4.9 [meta.reflection.access.queries] | Metafunctions should not be defined in terms of constant subexpressions | Yes | | |
| 4434(i) | New | 21.4.9 [meta.reflection.access.queries] | meta::is_accessible does not need to consider incompleteD | Yes | | |
| 4429(i) | Immediate | 21.4.11 [meta.reflection.layout] | meta::alignment_of should exclude data member description of bit-field | Yes | | |
| 4298(i) | New | 21.4.12 [meta.reflection.extract] | §[meta.reflection.extract] Malformed "F noexcept" type | Yes | 3 | |
| 4316(i) | Immediate | 21.4.13 [meta.reflection.substitute] | {can_}substitute specification is ill-formed | Yes | 1 | |
| 4442(i) | Immediate | 21.4.14 [meta.reflection.result] | Clarifyexpr andfn formeta::reflect_object andmeta::reflect_function | Yes | | |
| 4426(i) | Voting | 21.4.15 [meta.reflection.array] | Clarify whatmeta::reflect_constant_string considers a string literal | Yes | | |
| 4423(i) | Voting | 21.4.16 [meta.reflection.define.aggregate] | meta::data_member_spec allows negative bit-field widths | Yes | | |
| 4449(i) | Immediate | 21.4.16 [meta.reflection.define.aggregate] | define_aggregate members must be public | Yes | | |
| 4424(i) | Immediate | 21.4.16 [meta.reflection.define.aggregate] | meta::define_aggregate should require a class type | Yes | 1 | |
| 4443(i) | Immediate | 21.4.16 [meta.reflection.define.aggregate] | Clean up identifier comparisons inmeta::define_aggregate | Yes | | |
| 921(i) | C++11 | 21.5.3 [ratio.ratio] | Rational Arithmetic should use template aliases | Yes | | |
| 1388(i) | C++11 | 21.5.3 [ratio.ratio] | LWG 1281 incorrectly accepted | Yes | | |
| 1122(i) | Resolved | 21.5.3 [ratio.ratio] | Ratio values should beconstexpr | Yes | | |
| 1281(i) | Resolved | 21.5.3 [ratio.ratio] | CopyConstruction and Assignment between ratios having the same normalized form | Yes | | |
| 948(i) | C++11 | 21.5.4 [ratio.arithmetic] | ratio arithmetic tweak | Yes | | |
| 1389(i) | Resolved | 21.5.4 [ratio.arithmetic] | Compile-time rational arithmetic and overflow | Yes | | |
| 1121(i) | NAD | 21.5.4 [ratio.arithmetic] | Support for multiple arguments | Yes | | |
| 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] | Markconstexpr global variables asinline | 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 forconst 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 onstd::string | Yes | | |
| 2456(i) | Resolved | 22.2 [utility] | Incorrect exception specifications for 'swap' throughout library | Yes | 1 | |
| 1377(i) | Resolved | 22.2 [utility] | The revisedforward 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-memberswap contract | No | 2 | |
| 2554(i) | Resolved | 22.2.2 [utility.swap] | Swapping multidimensional arrays is nevernoexcept | Yes | 2 | |
| 2800(i) | Resolved | 22.2.2 [utility.swap] | constexpr swap | Yes | 3 | |
| 4056(i) | NAD | 22.2.2 [utility.swap] | The effects ofstd::swap are under-specified | Yes | | |
| 2297(i) | NAD | 22.2.3 [utility.exchange] | [CD] Missing type requirements forstd::exchange | Yes | | |
| 2388(i) | NAD | 22.2.3 [utility.exchange] | Handling self-assignment in the proposed library functionstd::exchange | Yes | 2 | |
| 3757(i) | C++23 | 22.2.4 [forward] | What's the effect ofstd::forward_like<void>(x)? | Yes | | |
| 939(i) | C++11 | 22.2.4 [forward] | Problem withstd::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 structidentity | 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 ofstd::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 asmake_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 andtuple have too many conversions | Yes | | |
| 1380(i) | Resolved | 22.3 [pairs] | pair andtuple of references need to better specify move-semantics | Yes | | |
| 1382(i) | Resolved | 22.3 [pairs] | pair andtuple constructors shouldforward arguments | Yes | | |
| 1383(i) | Resolved | 22.3 [pairs] | Inconsistent defaulted move/copy members inpair andtuple | Yes | | |
| 840(i) | NAD | 22.3 [pairs] | pair default template argument | Yes | | |
| 916(i) | NAD | 22.3 [pairs] | Redundant move-assignment operator ofpair 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 modelLessThanComparable in unconstrained code even ifT andU do. | Yes | | |
| 3342(i) | New | 22.3.2 [pairs.pair] | Library wording uses "initializesx withy", 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 andtuple copy and move constructor have backwards specification | Yes | 0 | |
| 3382(i) | C++20 | 22.3.2 [pairs.pair] | NTTP forpair andarray | Yes | 2 | |
| 2729(i) | C++17 | 22.3.2 [pairs.pair] | Missing SFINAE onstd::pair::operator= | Yes | 2 | |
| 1324(i) | Resolved | 22.3.2 [pairs.pair] | Still too many implicit conversions forpair andtuple | Yes | | |
| 1326(i) | Resolved | 22.3.2 [pairs.pair] | Missing/wrong preconditions forpair andtuple 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 ofpairs | Yes | 2 | |
| 3347(i) | C++20 | 22.3.3 [pairs.spec] | std::pair<T, U> now requiresT andU to be less-than-comparable | Yes | 1 | |
| 3166(i) | New | 22.3.4 [pair.astuple] | No such descriptive element asValue: | No | 3 | |
| 2974(i) | C++20 | 22.3.4 [pair.astuple] | Diagnose out of boundstuple_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 andtuple,optional andunique_ptr | Yes | 2 | |
| 522(i) | CD1 | 22.4 [tuple] | Tuple doesn't define swap | Yes | | |
| 801(i) | Resolved | 22.4 [tuple] | tuple andpair trivial members | Yes | | |
| 2773(i) | C++17 | 22.4.1 [tuple.general] | Makingstd::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] | Unspecializedstd::tuple_size should be defined | Yes | | |
| 3378(i) | New | 22.4.2 [tuple.syn] | tuple_size_v/tuple_element_t should be available whentuple_size/tuple_element are | Yes | 3 | |
| 3990(i) | WP | 22.4.4 [tuple.tuple] | Program-defined specializations ofstd::tuple andstd::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] | Explicittuple constructors for more than one parameter | Yes | 2 | |
| 1077(i) | NAD Editorial | 22.4.4 [tuple.tuple] | Nonesensetuple declarations | Yes | | |
| 4267(i) | New | 22.4.4.2 [tuple.cnstr] | Uses-allocator construction is meaningless for tuple of references | Yes | 3 | |
| 4313(i) | New | 22.4.4.2 [tuple.cnstr] | Uses-allocator construction ofpair intuple'sallocator_arg_t constructors | Yes | 3 | |
| 3583(i) | New | 22.4.4.2 [tuple.cnstr] | Clarify if/when short circuiting applies to conditions inConstraints: elements | No | 3 | |
| 2528(i) | New | 22.4.4.2 [tuple.cnstr] | Order ofstd::tuple construction unspecified | No | 3 | |
| 4045(i) | WP | 22.4.4.2 [tuple.cnstr] | tuple can create dangling references fromtuple-like | Yes | | |
| 3121(i) | C++23 | 22.4.4.2 [tuple.cnstr] | tuple constructor constraints forUTypes&&... 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] | TupleEXPLICIT constructor templates that taketuple 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 tostd::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 atuple oroptional from{aggregate-member-value} | Yes | 2 | |
| 917(i) | NAD | 22.4.4.2 [tuple.cnstr] | Redundant move-assignment operator oftuple 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 isforward_as_tuple notconstexpr? | Yes | | |
| 2301(i) | C++14 | 22.4.5 [tuple.creation] | Why isstd::tie notconstexpr? | Yes | 2 | |
| 1384(i) | C++11 | 22.4.5 [tuple.creation] | Functionpack_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 forstd::ignore is unimplementable forvolatile bit-fields | Yes | 4 | |
| 1201(i) | Resolved | 22.4.5 [tuple.creation] | Do we always want to unwrapref-wrappers inmake_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 ofstd::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 fromintegral_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 forconst 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 ofoperator<=>(tuple, tuple) | Yes | 4 | |
| 2472(i) | New | 22.4.9 [tuple.rel] | Heterogeneous comparisons in the standard library can result in ambiguities | No | 3 | |
| 1335(i) | C++11 | 22.4.9 [tuple.rel] | Insufficient requirements fortuple::operator<() | Yes | | |
| 532(i) | NAD | 22.4.9 [tuple.rel] | Tuple comparison | Yes | | 348 |
| 928(i) | NAD Concepts | 22.4.9 [tuple.rel] | Wrong concepts used fortuple'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 isT is an array | Yes | 0 | |
| 2900(i) | C++17 | 22.5.3 [optional.optional] | The copy and move constructors ofoptional are notconstexpr | Yes | | |
| 2756(i) | C++17 | 22.5.3 [optional.optional] | C++ WPoptional<T> should 'forward'T's implicit conversions | Yes | 1 | |
| 2825(i) | Resolved | 22.5.3 [optional.optional] | LWG 2756 breaks class template argument deduction foroptional | 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 foroptional/variant/any | Yes | 3 | |
| 2842(i) | C++17 | 22.5.3.2 [optional.ctor] | in_place_t check foroptional::optional(U&&) should decayU | 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 foremplace betweenoptional andvariant | Yes | 3 | |
| 2748(i) | C++17 | 22.5.3.5 [optional.swap] | swappable traits foroptionals | Yes | 0 | |
| 4281(i) | New | 22.5.3.7 [optional.observe] | Inconsistency betweenvalue_or() anderror_or() instd::expected | No | 3 | |
| 4406(i) | New | 22.5.3.7 [optional.observe] | optional::value_or return statement is inconsistent withMandates | Yes | 3 | |
| 3424(i) | New | 22.5.3.7 [optional.observe] | optional::value_or should never return acv-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) | Immediate | 22.5.3.8 [optional.monadic] | LWG 3973 brokeconst overloads ofstd::optional monadic operations | Yes | 1 | |
| 4300(i) | Voting | 22.5.4.3 [optional.ref.assign] | MissingReturns: element inoptional<T&>::emplace | Yes | | |
| 4439(i) | New | 22.5.4.4 [optional.ref.swap] | std::optional<T&>::swap possibly selects ADL-foundswap | Yes | | |
| 4308(i) | New | 22.5.4.5 [optional.ref.iterators] | std::optional<T&>::iterator can't be a contiguous iterator for someT | Yes | 1 | |
| 4304(i) | Immediate | 22.5.4.6 [optional.ref.observe] | std::optional<NonReturnable&> is ill-formed due tovalue_or | Yes | 1 | |
| 4299(i) | Voting | 22.5.4.7 [optional.ref.monadic] | MissingMandates: part inoptional<T&>::transform | Yes | | |
| 4367(i) | New | 22.5.4.7 [optional.ref.monadic] | Improveoptional<T&>::or_else | Yes | 4 | |
| 3613(i) | New | 22.5.5 [optional.nullopt] | Specify thatnullopt_t is copyable | Yes | 3 | |
| 2736(i) | C++17 | 22.5.5 [optional.nullopt] | nullopt_t insufficiently constrained | Yes | 2 | |
| 3562(i) | NAD | 22.5.5 [optional.nullopt] | Supersedingnullopt_t's requirement to not beDefaultConstructible | Yes | | |
| 2806(i) | C++17 | 22.5.6 [optional.bad.access] | Base class ofbad_optional_access | Yes | 1 | |
| 4370(i) | Voting | 22.5.9 [optional.comp.with.t] | Comparison ofoptional<T> toT may be ill-formed | Yes | | |
| 4072(i) | WP | 22.5.9 [optional.comp.with.t] | std::optional comparisons: constrain harder | Yes | 1 | |
| 3566(i) | C++23 | 22.5.9 [optional.comp.with.t] | Constraint recursion foroperator<=>(optional<T>, U) | Yes | | |
| 3746(i) | C++23 | 22.5.9 [optional.comp.with.t] | optional's spaceship withU with a type derived fromoptional causes infinite constraint meta-recursion | Yes | | |
| 2945(i) | C++20 | 22.5.9 [optional.comp.with.t] | Order of template parameters inoptional comparisons | Yes | 2 | |
| 2934(i) | C++17 | 22.5.9 [optional.comp.with.t] | optional<const T> doesn't compare withT | Yes | | |
| 3627(i) | Voting | 22.5.10 [optional.specalg] | Inconsistent specifications forstd::make_optional overloads | Yes | 3 | |
| 2805(i) | Resolved | 22.6 [variant] | void and reference type alternatives invariant,variant<> andindex() | 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 requireDestructible types | Yes | | |
| 2991(i) | Voting | 22.6.3.2 [variant.ctor] | variant copy constructor missingnoexcept(see below) | Yes | | |
| 3215(i) | New | 22.6.3.2 [variant.ctor] | variant default constructor has vagueconstexpr requirements | No | 2 | |
| 2833(i) | Open | 22.6.3.2 [variant.ctor] | Library needs to specify what it means when it declares a functionconstexpr | 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] | Surprisingvariant construction | Yes | 2 | |
| 2882(i) | Resolved | 22.6.3.2 [variant.ctor] | Clarifyvariant 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 assigningvariant'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] | Makevariant move-assignment more exception safe | Yes | | |
| 2749(i) | C++17 | 22.6.3.7 [variant.swap] | swappable traits forvariants | Yes | 1 | |
| 4197(i) | New | 22.6.7 [variant.visit] | Complexity ofstd::visit with immediate functions | Yes | 2 | |
| 2970(i) | C++20 | 22.6.7 [variant.visit] | Return type ofstd::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 ofbad_any_cast::what() | Yes | | |
| 3416(i) | New | 22.7.4 [any.class] | TheThrows: specification ofstd::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'sin_place constructors | Yes | 0 | |
| 2754(i) | Resolved | 22.7.4.2 [any.cons] | Thein_place constructors andemplace functions added by P0032R3 don't requireCopyConstructible | Yes | 1 | |
| 2886(i) | NAD | 22.7.4.5 [any.observers] | Keep theempty() functions inany | Yes | | |
| 3423(i) | New | 22.7.5 [any.nonmembers] | std::any_cast should never return acv-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] | Redundantconst in the return type ofany_cast(const any&) | Yes | 0 | |
| 3688(i) | New | 22.8.4 [expected.bad] | Exception specifications of copy/move member functions ofstd::bad_expected_access | No | 2 | |
| 4031(i) | WP | 22.8.5 [expected.bad.void] | bad_expected_access<void> member functions should benoexcept | Yes | | |
| 3891(i) | New | 22.8.6.1 [expected.object.general] | LWG 3870 breaksstd::expected<cv T, E> | Yes | 2 | |
| 3754(i) | C++23 | 22.8.6.1 [expected.object.general] | Class templateexpected synopsis contains declarations that do not match the detailed description | Yes | | |
| 4222(i) | WP | 22.8.6.2 [expected.object.cons] | expected constructor from a single value missing a constraint | Yes | | |
| 3836(i) | C++23 | 22.8.6.2 [expected.object.cons] | std::expected<bool, E1> conversion constructorexpected(const expected<U, G>&) should take precedence overexpected(U&&) with operatorbool | Yes | 1 | |
| 4195(i) | New | 22.8.6.4 [expected.object.assign] | expected<int, int> isn't specified to be trivially assignable | Yes | 2 | |
| 4026(i) | New | 22.8.6.4 [expected.object.assign] | Assignment operators ofstd::expected should propagate triviality | Yes | 2 | |
| 3951(i) | WP | 22.8.6.5 [expected.object.swap] | §[expected.object.swap]: Usingvalue() instead ofhas_value() | Yes | | |
| 3843(i) | C++23 | 22.8.6.6 [expected.object.obs] | std::expected<T,E>::value() & assumesE is copy constructible | Yes | | |
| 3938(i) | WP | 22.8.6.7 [expected.object.monadic] | Cannot usestd::expected monadic ops with move-onlyerror_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] | BadMandates forexpected::transform_error overloads | Yes | | |
| 3877(i) | C++23 | 22.8.6.7 [expected.object.monadic] | Incorrect constraints onconst-qualified monadic overloads forstd::expected | Yes | | |
| 4366(i) | Voting | 22.8.6.8 [expected.object.eq] | Heterogeneous comparison ofexpected may be ill-formed | Yes | | |
| 3703(i) | C++23 | 22.8.7.1 [expected.void.general] | Missing requirements forexpected<T, E> requires is_void<T> | Yes | 2 | |
| 4025(i) | WP | 22.8.7.4 [expected.void.assign] | Move assignment operator ofstd::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 needsE to be copy constructible | Yes | | |
| 4187(i) | New | 22.9.2 [template.bitset] | bitset::reference should be const-assignable | Yes | 3 | |
| 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 withzero andone | 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 andlong 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 | | |
| 4294(i) | Voting | 22.9.2.2 [bitset.cons] | bitset(const CharT*) constructor needs to be constrained | 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] | Unnecessarymem_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 | |
| 4268(i) | New | 22.10.4 [func.require] | function<void()> suppressesnodiscard warnings | No | 3 | |
| 4319(i) | New | 22.10.4 [func.require] | Supporting copy-elision in function wrappers | Yes | 3 | |
| 4007(i) | New | 22.10.4 [func.require] | Mystic prohibition of calling avolatile-qualified perfect forwarding call wrapper | Yes | 3 | |
| 3655(i) | C++23 | 22.10.4 [func.require] | TheINVOKE operation andunion types | Yes | 3 | |
| 2219(i) | C++17 | 22.10.4 [func.require] | INVOKE-ing a pointer to member with areference_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) andINVOKE(f, t1, t2,... tN, R) are too similar | Yes | | |
| 2807(i) | C++17 | 22.10.5 [func.invoke] | std::invoke should usestd::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 templatestd::apply() is required to beconstexpr, butstd::invoke() isn't | Yes | 3 | |
| 3046(i) | New | 22.10.6 [refwrap] | Do not requirereference_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 fromT&& | 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 ofstd::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] | Unnecessarydecay inreference_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 propagatenoexcept | 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 instd::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 rejectstd::bind_front<42>() and its friends? | Yes | 4 | |
| 2767(i) | C++17 | 22.10.13 [func.not.fn] | not_fncall_wrapper can form invalid types | Yes | 0 | |
| 3184(i) | C++20 | 22.10.14 [func.bind.partial] | Inconsistencies inbind_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 fromintegral_constant<bool> | Yes | | |
| 2487(i) | C++17 | 22.10.15.4 [func.bind.bind] | bind() should beconst-overloaded, notcv-overloaded | Yes | 2 | |
| 2545(i) | C++17 | 22.10.15.4 [func.bind.bind] | Simplify wording forbind without explicitly specified return type | Yes | 3 | |
| 2021(i) | C++14 | 22.10.15.4 [func.bind.bind] | Further incorrect usages ofresult_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 thecv-qualification of the call wrapper to the callable object | Yes | 3 | |
| 816(i) | Resolved | 22.10.15.4 [func.bind.bind] | Shouldbind()'s returned functor have a nofail copy ctor whenbind() is nofail? | Yes | | |
| 3824(i) | C++23 | 22.10.15.5 [func.bind.place] | Number ofbind placeholders is underspecified | Yes | | |
| 2488(i) | C++17 | 22.10.15.5 [func.bind.place] | Placeholders should be allowed and encouraged to beconstexpr | Yes | 2 | |
| 2489(i) | C++17 | 22.10.16 [func.memfn] | mem_fn() should benoexcept | 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] | Clarifyunspecified 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 | | |
| 4264(i) | New | 22.10.17.1 [func.wrap.general] | Skipping indirection is not allowed forfunction_ref | Yes | 2 | |
| 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 ofstd::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'sCallable definition is broken | Yes | 2 | |
| 2401(i) | C++17 | 22.10.17.3 [func.wrap.func] | std::function needs morenoexcept | 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 ofstd::function not needed | Yes | | |
| 1399(i) | C++11 | 22.10.17.3 [func.wrap.func] | function does not need anexplicit 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 benoexcept instd::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 useallocator::construct | Yes | 3 | |
| 1023(i) | NAD Editorial | 22.10.17.3 [func.wrap.func] | Unclear inheritance relation forstd::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 ofstd::function taking anF 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 deducingthis | Yes | 2 | |
| 3238(i) | C++20 | 22.10.17.3.2 [func.wrap.func.con] | Insufficiently-defined behavior ofstd::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 forreference_wrappers and function pointers | Yes | 0 | |
| 2781(i) | C++17 | 22.10.17.3.2 [func.wrap.func.con] | Contradictory requirements forstd::function andstd::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 requiresCopyConstructible 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] | FCDfunction does not need anexplicit 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 duringstd::function invocation | Yes | | |
| 815(i) | Resolved | 22.10.17.3.5 [func.wrap.func.inv] | std::function andreference_closure do not use perfect forwarding | Yes | | |
| 2591(i) | C++17 | 22.10.17.3.6 [func.wrap.func.targ] | std::function's member templatetarget() 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 | | |
| 4255(i) | Voting | 22.10.17.4.3 [func.wrap.move.ctor] | move_only_function constructor should recognize emptycopyable_functions | Yes | | |
| 3680(i) | New | 22.10.17.4.3 [func.wrap.move.ctor] | Constructor ofmove_only_function with emptyref-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 | |
| 4373(i) | New | 22.10.17.6.2 [func.wrap.ref.class] | function_ref should provideresult_type | Yes | 3 | |
| 4256(i) | Voting | 22.10.17.6.3 [func.wrap.ref.ctor] | Incorrect constrains forfunction_ref constructors fromnontype_t | Yes | | |
| 4425(i) | Voting | 22.10.17.6.5 [func.wrap.ref.deduct] | CTADfunction_ref of data member pointer should producenoexcept signature | Yes | | |
| 4127(i) | New | 22.10.18.3 [func.search.bm] | The Standard Library should not use predicates of the formpred(*i) != false | Yes | 3 | |
| 4365(i) | LEWG | 22.10.18.3 [func.search.bm] | boyer_moore_searcher andboyer_moore_horspool_searcher should beconstexpr-friendly | Yes | 4 | |
| 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 forstd::hash | Yes | | |
| 2119(i) | C++17 | 22.10.19 [unord.hash] | Missinghash specializations for extended integer types | Yes | 3 | |
| 2148(i) | C++14 | 22.10.19 [unord.hash] | Hashing enums should be supported directly bystd::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] | Missingstd::hash specializations forstd::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 fornullptr_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] | Isstd::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 | |
| 4247(i) | WP | 22.12 [stdbit.h.syn] | Header<stdbit.h> is not yet freestanding | Yes | | |
| Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates |
|---|
| 4173(i) | New | 23 [containers] | Better term for "references, pointers and iterators to elements" | No | 4 | |
| 4176(i) | New | 23 [containers] | Refer back to container requirements when extending them | No | 4 | |
| 2884(i) | LEWG | 23 [containers] | Relational operators for containers should sfinae; if the underlying type is not comparable, neither should the container be | No | 4 | |
| 2307(i) | LEWG | 23 [containers] | Should the Standard Library useexplicit only when necessary? | No | 2 | |
| 2193(i) | C++14 | 23 [containers] | Default constructors for standard library containers are explicit | Yes | 1 | |
| 774(i) | C++11 | 23 [containers] | Memberswap 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 | | |
| 2885(i) | NAD | 23 [containers] | The relational operators ofoptional andvariant completely reflect the semantics of the element types — this is inconsistent with other types in the library | 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 ofEqualityComparable forstd::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 ofsize() forstd::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 distinguishconst and non-const variables | Yes | 3 | |
| 3352(i) | C++20 | 23.2.2 [container.requirements.general] | strong_equality isn't a thing | Yes | 1 | |
| 2448(i) | C++17 | 23.2.2 [container.requirements.general] | Non-normative Container destructor specification | Yes | 0 | |
| 2218(i) | C++17 | 23.2.2 [container.requirements.general] | Unclear how containers useallocator_traits::construct() | Yes | 3 | |
| 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 onCopy/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 onconst_iterator'svalue_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 requirethree_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 | 4 | |
| 3957(i) | WP | 23.2.2.5 [container.alloc.reqmts] | §[container.alloc.reqmts] The value category ofv 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 onvector<bool> | Yes | | |
| 4396(i) | Immediate | 23.2.4 [sequence.reqmts] | Improveinplace_vector(from_range_t, R&& rg) | Yes | 3 | |
| 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 containersa.assign(n, t) | Yes | 3 | |
| 2206(i) | Open | 23.2.4 [sequence.reqmts] | Inaccuracy ininitializer_list constructor requirements | Yes | 3 | |
| 4147(i) | WP | 23.2.4 [sequence.reqmts] | Precondition oninplace_vector::emplace | Yes | | |
| 3927(i) | WP | 23.2.4 [sequence.reqmts] | Unclear preconditions foroperator[] for sequence containers | Yes | | |
| 3732(i) | C++23 | 23.2.4 [sequence.reqmts] | prepend_range andappend_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 anddeque have incorrectinsert requirements | Yes | 2 | |
| 2698(i) | C++17 | 23.2.4 [sequence.reqmts] | Effect ofassign() on iterators/pointers/references | Yes | 0 | |
| 2231(i) | C++14 | 23.2.4 [sequence.reqmts] | DR 704 removes complexity guarantee forclear() | 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 ofmatch_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 containerback function should also supportconst_iterator | Yes | | |
| 1234(i) | C++11 | 23.2.4 [sequence.reqmts] | "Do the right thing" andNULL | 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] missingmultiset/map cases | No | 3 | |
| 2743(i) | C++23 | 23.2.5.1 [container.node.overview] | p0083r3node_handle private members missing "exposition only" comment | Yes | 3 | |
| 3227(i) | New | 23.2.7 [associative.reqmts] | Ambiguity issue forextract in ordered and unordered associative containers | Yes | 3 | |
| 2362(i) | New | 23.2.7 [associative.reqmts] | unique, associativeemplace() should not move/copy themapped_type constructor arguments when no insertion happens | No | 3 | |
| 2844(i) | Open | 23.2.7 [associative.reqmts] | Stability ofa_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 beCopyConstructible | Yes | 3 | |
| 2436(i) | C++17 | 23.2.7 [associative.reqmts] | Comparators for associative containers should always beCopyConstructible | Yes | 2 | |
| 2542(i) | C++17 | 23.2.7 [associative.reqmts] | Missingconst 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 returnq2 | Yes | 0 | |
| 2299(i) | C++14 | 23.2.7 [associative.reqmts] | [CD] Effects of inaccessiblekey_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'siterator andconst_iterator | Yes | | |
| 1253(i) | C++11 | 23.2.7 [associative.reqmts] | invalidation of iterators andemplace 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 containerinsert(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 betweenmapped_type andvalue_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 theinsert(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] | Renamingemplace() overloads | Yes | | |
| 1302(i) | NAD | 23.2.7 [associative.reqmts] | differentemplace 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 |
| 4132(i) | New | 23.2.7.1 [associative.reqmts.general] | Throws specifications need to includeboolean-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 | |
| 3578(i) | WP | 23.2.7.1 [associative.reqmts.general] | Iterator SCARYness in the context of associative container merging | 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 incorrectThrows: clause | Yes | 0 | |
| 2156(i) | C++17 | 23.2.8 [unord.req] | Unordered containers'reserve(n) reserves forn-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'sclear() method complexity | Yes | 2 | |
| 2304(i) | C++14 | 23.2.8 [unord.req] | Complexity ofcount 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 addinitializer_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 havebucket_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 whenHash function objects have different behaviour | Yes | | |
| 3176(i) | Resolved | 23.2.8 [unord.req] | Underspecified behavior of unordered containers whenContainer::key_equal differs fromPred | 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 apair oflocal_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] | Throwingswap 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] | ProvideContiguousStorage 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 andconst_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] | Undescribedassign function ofstd::array | Yes | | |
| 2443(i) | Resolved | 23.3.3 [array] | std::array member functions should beconstexpr | Yes | | |
| 2335(i) | NAD | 23.3.3 [array] | array<array<int, 3>, 4> should be layout-compatible withint[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 sizedtr1::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] | Publicexposition only member instd::array | Yes | 4 | |
| 2590(i) | C++17 | 23.3.3.1 [array.overview] | Aggregate initialization forstd::array | Yes | 0 | |
| 2897(i) | Resolved | 23.3.3.1 [array.overview] | array::iterator andarray::const_iterator should be literal types | Yes | 2 | |
| 3488(i) | Open | 23.3.3.4 [array.special] | Isarray<const int, 0> swappable or not? | Yes | 3 | |
| 4276(i) | Voting | 23.3.3.5 [array.zero] | front() andback() are not hardened for zero-lengthstd::arrays | Yes | | |
| 2157(i) | Open | 23.3.3.5 [array.zero] | How doesstd::array<T,0> initialization work whenT is not default-constructible? | Yes | 3 | |
| 1417(i) | C++11 | 23.3.3.5 [array.zero] | front/back on a zero-sizedarray 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 | | |
| 4225(i) | New | 23.3.5.3 [deque.capacity] | What should happen when an exception is thrown on resizingstd::deque,std::forward_list, orstd::list? | Yes | 3 | |
| 1418(i) | C++11 | 23.3.5.3 [deque.capacity] | Effects ofresize(size()) on adeque | Yes | | |
| 850(i) | CD1 | 23.3.5.3 [deque.capacity] | Shouldshrink_to_fit apply tostd::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 anddeque iteratorerase invalidates elements even when no change occurs | Yes | 3 | |
| 2953(i) | C++20 | 23.3.5.4 [deque.modifiers] | LWG 2853 should apply todeque::erase too | Yes | 0 | |
| 2364(i) | C++17 | 23.3.5.4 [deque.modifiers] | deque andvectorpop_back don't specify iterator invalidation requirements | Yes | 0 | |
| 2477(i) | C++17 | 23.3.5.4 [deque.modifiers] | Inconsistency of wordings instd::vector::erase() andstd::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] | Comparingforward_list::before_begin() toforward_list::end() | Yes | | |
| 4164(i) | WP | 23.3.7.5 [forward.list.modifiers] | Missing guarantees forforward_list modifiers | Yes | 3 | |
| 3817(i) | C++23 | 23.3.7.5 [forward.list.modifiers] | Missing preconditions onforward_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 forforward_list::insert_after | Yes | | |
| 1340(i) | C++11 | 23.3.7.5 [forward.list.modifiers] | Why doesforward_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 useaddressof | Yes | 0 | |
| 2045(i) | C++14 | 23.3.7.6 [forward.list.ops] | forward_list::merge andforward_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 offorward_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 ofstd::erase forlist should specify return type asbool | Yes | | |
| 4320(i) | New | 23.3.9 [hive] | hive operations involving insertion/erasure should have𝒪(log n) time complexity | Yes | | |
| 4379(i) | New | 23.3.9.3 [hive.capacity] | hive::reserve() needsThrows: element adjusted to match block min/max considerations | Yes | 3 | |
| 4380(i) | New | 23.3.9.3 [hive.capacity] | hive::reserve() complexity does not reflect potential deallocation of blocks | Yes | 3 | |
| 4323(i) | New | 23.3.9.5 [hive.operations] | hive::unique time complexity should incorporate potential block removal complexity | Yes | 3 | |
| 4318(i) | Voting | 23.3.9.6 [hive.erasure] | Havehive::erase_if reevaluateend() to avoid UB | Yes | | |
| 4233(i) | WP | 23.3.9.6 [hive.erasure] | The helper lambda ofstd::erase forhive should specify return type asbool | Yes | | |
| 307(i) | CD1 | 23.3.11 [list] | Lack of reference typedefs in container adaptors | Yes | | |
| 320(i) | CD1 | 23.3.11.2 [list.cons] | list::assign overspecified | Yes | | |
| 410(i) | CD1 | 23.3.11.2 [list.cons] | Missing semantics for stack and queue comparison operators | Yes | | |
| 1420(i) | C++11 | 23.3.11.3 [list.capacity] | Effects ofresize(size()) on alist | Yes | | |
| 132(i) | TC1 | 23.3.11.3 [list.capacity] | list::resize description uses random access iterators | Yes | | |
| 2997(i) | C++23 | 23.3.11.5 [list.ops] | LWG 491 and the specification of{forward_,}list::unique | Yes | 3 | |
| 2998(i) | C++20 | 23.3.11.5 [list.ops] | Requirements on function objects passed to{forward_,}list-specific algorithms | Yes | 0 | |
| 3087(i) | C++20 | 23.3.11.5 [list.ops] | One final&x in §[list.ops] | Yes | 3 | |
| 2824(i) | C++17 | 23.3.11.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.11.5 [list.ops] | merge() stability for lists versus forward lists | Yes | | |
| 1207(i) | C++11 | 23.3.11.5 [list.ops] | Underspecifiedstd::list operations? | Yes | | |
| 1215(i) | C++11 | 23.3.11.5 [list.ops] | list::merge with unequal allocators | Yes | | |
| 250(i) | CD1 | 23.3.11.5 [list.ops] | splicing invalidates iterators | Yes | | |
| 278(i) | CD1 | 23.3.11.5 [list.ops] | What does iterator validity mean? | Yes | | |
| 300(i) | CD1 | 23.3.11.5 [list.ops] | list::merge() specification incomplete | Yes | | |
| 315(i) | CD1 | 23.3.11.5 [list.ops] | Bad "range" in list::unique complexity | Yes | | |
| 2279(i) | NAD | 23.3.11.5 [list.ops] | Carefully state effects oflist::splice function | Yes | | |
| 131(i) | NAD | 23.3.11.5 [list.ops] | list::splice throws nothing | Yes | | |
| 491(i) | NAD | 23.3.11.5 [list.ops] | std::list<>::unique incorrectly specified | Yes | | |
| 464(i) | CD1 | 23.3.13 [vector] | Suggestion for new member functions in standard containers | Yes | | |
| 469(i) | CD1 | 23.3.13 [vector] | vector<bool> ill-formed relational operators | Yes | | |
| 496(i) | CD1 | 23.3.13 [vector] | Illegal use of "T" in vector<bool> | Yes | | |
| 69(i) | TC1 | 23.3.13 [vector] | Must elements of a vector be contiguous? | Yes | | |
| 101(i) | NAD Editorial | 23.3.13 [vector] | No way to free storage for vector and deque | Yes | | |
| 757(i) | NAD Editorial | 23.3.13 [vector] | Typo in the synopsis of vector | Yes | | |
| 1184(i) | NAD | 23.3.13 [vector] | Feature request: dynamic bitset | Yes | | |
| 96(i) | NAD | 23.3.13 [vector] | Vector<bool> is not a container | Yes | | |
| 134(i) | TC1 | 23.3.13.2 [vector.cons] | vector constructors over specified | Yes | | |
| 3758(i) | New | 23.3.13.3 [vector.capacity] | Element-relocating operations ofstd::vector andstd::deque should conditionally requireCpp17CopyInsertable in their preconditions | No | 3 | |
| 2158(i) | Open | 23.3.13.3 [vector.capacity] | Conditional copy/move instd::vector | Yes | 3 | |
| 1102(i) | Open | 23.3.13.3 [vector.capacity] | std::vector's reallocation policy still unclear | Yes | 3 | |
| 2160(i) | C++17 | 23.3.13.3 [vector.capacity] | Unintended destruction ordering-specification ofresize | Yes | 1 | |
| 2223(i) | C++17 | 23.3.13.3 [vector.capacity] | shrink_to_fit effect on iterator validity | Yes | 2 | |
| 2323(i) | C++14 | 23.3.13.3 [vector.capacity] | vector::resize(n, t)'s specification should be simplified | Yes | 0 | |
| 2033(i) | C++14 | 23.3.13.3 [vector.capacity] | Preconditions ofreserve,shrink_to_fit, andresize functions | Yes | | |
| 1525(i) | C++11 | 23.3.13.3 [vector.capacity] | Effects ofresize(size()) on avector | Yes | | |
| 329(i) | CD1 | 23.3.13.3 [vector.capacity] | vector capacity, reserve and reallocation | Yes | | |
| 341(i) | CD1 | 23.3.13.3 [vector.capacity] | Vector reallocation and swap | Yes | | |
| 755(i) | CD1 | 23.3.13.3 [vector.capacity] | std::vector andstd:string lack explicit shrink-to-fit operations | Yes | | |
| 2066(i) | Resolved | 23.3.13.3 [vector.capacity] | Missing specification ofvector::resize(size_type) | Yes | | |
| 1246(i) | NAD | 23.3.13.3 [vector.capacity] | vector::resize() missing efficiency guarantee | Yes | | |
| 2596(i) | C++17 | 23.3.13.4 [vector.data] | vector::data() should useaddressof | Yes | 0 | |
| 1312(i) | C++11 | 23.3.13.4 [vector.data] | vector::data no longer returns a raw pointer | Yes | | |
| 2164(i) | C++20 | 23.3.13.5 [vector.modifiers] | What are the semantics ofvector.emplace(vector.begin(), vector.back())? | Yes | 2 | |
| 3077(i) | C++20 | 23.3.13.5 [vector.modifiers] | (push|emplace)_back should invalidate theend iterator | Yes | 3 | |
| 2853(i) | C++17 | 23.3.13.5 [vector.modifiers] | Possible inconsistency in specification oferase in [vector.modifiers] | Yes | 0 | |
| 2252(i) | C++14 | 23.3.13.5 [vector.modifiers] | Strong guarantee onvector::push_back() still broken with C++11? | Yes | | |
| 247(i) | CD1 | 23.3.13.5 [vector.modifiers] | vector,deque::insert complexity | Yes | | |
| 406(i) | CD1 | 23.3.13.5 [vector.modifiers] | vector::insert(s) exception safety | Yes | | |
| 414(i) | CD1 | 23.3.13.5 [vector.modifiers] | Which iterators are invalidated by v.erase()? | Yes | | |
| 2256(i) | NAD | 23.3.13.5 [vector.modifiers] | Onvector iterator invalidation | Yes | 3 | |
| 2449(i) | NAD | 23.3.13.5 [vector.modifiers] | vector::insert invalidatesend()? | Yes | 3 | |
| 4219(i) | Tentatively NAD | 23.3.13.6 [vector.erasure] | std::vector::erase[_if] should be based on rangesremove | Yes | | |
| 3638(i) | New | 23.3.14 [vector.bool] | vector<bool>::swap(reference, reference) is useless | Yes | 3 | |
| 1422(i) | Open | 23.3.14 [vector.bool] | vector<bool> iterators are not random access | No | 3 | |
| 2187(i) | C++14 | 23.3.14 [vector.bool] | vector<bool> is missingemplace andemplace_back member functions | Yes | | |
| 814(i) | C++11 | 23.3.14 [vector.bool] | vector<bool>::swap(reference, reference) not defined | Yes | | |
| 1254(i) | C++11 | 23.3.14 [vector.bool] | Misleading sentence invector<bool>::flip | Yes | | |
| 1284(i) | C++11 | 23.3.14 [vector.bool] | vector<bool> initializer_list constructor missing an allocator argument | Yes | | |
| 751(i) | NAD | 23.3.14 [vector.bool] | change pass-by-reference members ofvector<bool> to pass-by-value? | Yes | | |
| 4228(i) | Tentatively NAD | 23.3.14.1 [vector.bool.pspc] | Doesvector<bool, Allocator> mandate thatAllocator::value_type isbool? | No | | |
| 3778(i) | C++23 | 23.3.14.1 [vector.bool.pspc] | vector<bool> missing exception specifications | Yes | | |
| 4122(i) | New | 23.3.16.1 [inplace.vector.overview] | Ill-formedoperator<=> can cause hard error when instantiatingstd::inplace_vector | Yes | 2 | |
| 4151(i) | New | 23.3.16.5 [inplace.vector.modifiers] | Precondition ofinplace_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 insertpair, nottuple | Yes | | |
| 2161(i) | NAD | 23.4 [associative] | const equivalence ofstd::map | Yes | 2 | |
| 1111(i) | NAD Concepts | 23.4 [associative] | associative containers underconstrained | Yes | | |
| 4223(i) | New | 23.4.1 [associative.general] | Deduction guides for maps are mishandling tuples and references | Yes | 2 | |
| 2059(i) | C++17 | 23.4.3 [map] | C++0x ambiguity problem withmap::erase | Yes | 3 | |
| 2300(i) | C++14 | 23.4.3 [map] | [CD] Redundant sections formap andmultimap 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 andmultimap value_compare overspecified | Yes | | |
| 4291(i) | Voting | 23.4.3.1 [map.overview] | explicit map(const Allocator&) should beconstexpr | 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 usepair<Key, T>, notpair<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 ofoperator[] formap andunordered_map | Yes | 3 | |
| 2007(i) | C++11 | 23.4.3.3 [map.access] | Incorrect specification of return value formap<>::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] | Doesmap::operator[] value-initialize or default-insert a missing element? | Yes | 3 | |
| 2464(i) | C++17 | 23.4.3.4 [map.modifiers] | try_emplace andinsert_or_assign misspecified | Yes | 2 | |
| 2571(i) | C++17 | 23.4.3.4 [map.modifiers] | §[map.modifiers]/2 imposes nonsensical requirement oninsert(InputIterator, InputIterator) | Yes | 0 | |
| 2005(i) | C++14 | 23.4.3.4 [map.modifiers] | unordered_map::insert(T&&) protection should apply tomap 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] | BadCopyConstructible 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 useallocator_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 containersbegin(n) mistakenlyconst | Yes | | |
| 1248(i) | Resolved | 23.5 [unord] | Equality comparison for unordered containers | Yes | | |
| 528(i) | NAD | 23.5 [unord] | const_iteratoriterator issue when they are the same type | Yes | | |
| 2026(i) | NAD | 23.5 [unord] | hash should bestd 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 | | |
| 4292(i) | Voting | 23.5.3.1 [unord.map.overview] | Unordered container local iterators should be constexpr iterators | Yes | | |
| 761(i) | CD1 | 23.5.3.3 [unord.map.elem] | unordered_map needs anat() 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] | Makingsize_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] | Unintendedqueue 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 templatescont-key-type andcont-mapped-type should be removed | Yes | | |
| 4398(i) | Voting | 23.6.2 [queue.syn] | enable_nonlocking_formatter_optimization should be disabled for container adaptors | Yes | 2 | |
| 4371(i) | Tentatively NAD | 23.6.3.1 [queue.defn] | Container adaptor'sempty/size should benoexcept | Yes | | |
| 2783(i) | C++20 | 23.6.3.1 [queue.defn] | stack::emplace() andqueue::emplace() should returndecltype(auto) | Yes | 2 | |
| 3189(i) | New | 23.6.4 [priority.queue] | Missing requirement forstd::priority_queue | No | 3 | |
| 3506(i) | C++23 | 23.6.4 [priority.queue] | Missing allocator-extended constructors forpriority_queue | Yes | 3 | |
| 3522(i) | C++23 | 23.6.4 [priority.queue] | Missing requirement onInputIterator template parameter forpriority_queue constructors | Yes | | |
| 3529(i) | C++23 | 23.6.4 [priority.queue] | priority_queue(first, last) should constructc 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 forpriority_queue taking allocators should callmake_heap | Yes | 0 | |
| 3723(i) | C++23 | 23.6.4.4 [priqueue.members] | priority_queue::push_range needs toappend_range | Yes | 2 | |
| 3161(i) | Open | 23.6.6 [stack] | Container adapters mandate use ofemplace_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 templatestd::stack should be movable | Yes | | |
| 3959(i) | New | 23.6.8 [flat.map] | Should the comparator ofstd::flat_map/std::flat_multimap be copied twice in some operations? | No | 3 | |
| 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 | |
| 4350(i) | LEWG | 23.6.8 [flat.map] | Should flat adaptors useinsert_range when available? | 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 takingKeyContainer lackKeyCompare parameter | Yes | 1 | |
| 3966(i) | New | 23.6.8.1 [flat.map.overview] | Thevalue_type andreference members ofstd::flat_(multi)map::(const_)iterator are unclear | No | 3 | |
| 3816(i) | C++23 | 23.6.8.1 [flat.map.overview] | flat_map andflat_multimap should impose sequence container requirements | Yes | | |
| 3963(i) | New | 23.6.8.2 [flat.map.defn] | Differentstd::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 defaultAllocator to be useful | Yes | 2 | |
| 4374(i) | New | 23.6.8.7 [flat.map.modifiers] | flat_meow range insertion behavior is unclear if in-place merge cannot allocate additional memory | No | 3 | |
| 4000(i) | New | 23.6.8.7 [flat.map.modifiers] | flat_map::insert_range'sEffects is not quite right | Yes | 3 | |
| 4239(i) | WP | 23.6.8.7 [flat.map.modifiers] | flat_map's transparent comparator no longer works for string literals | Yes | | |
| 4352(i) | New | 23.6.9.1 [flat.multimap.overview] | "operations on flat_multimap are equivalent to those of flat_map" | No | 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 ofstd::flat_map/std::flat_set | Yes | 2 | |
| 4384(i) | Voting | 23.6.11.2 [flat.set.defn] | flat_set::erase(iterator) is underconstrained | Yes | | |
| 3879(i) | C++23 | 23.6.11.6 [flat.set.erasure] | erase_if forflat_{,multi}set is incorrectly specified | Yes | | |
| 4180(i) | New | 23.6.12.5 [flat.multiset.modifiers] | Inconsistent constraints onflat_foo::emplace | Yes | 3 | |
| 3881(i) | C++23 | 23.6.13 [container.adaptors.format] | Incorrect formatting of container adapters backed bystd::string | Yes | | |
| 4351(i) | Voting | 23.7.2.1 [span.syn] | integral-constant-like needs moreremove_cvref_t | Yes | | |
| 3813(i) | New | 23.7.2.2.1 [span.overview] | std::span<volatile T, E> is made ill-formed by P2278R4 whenT is a normal class type | Yes | 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 redundantlynoexcept | Yes | | |
| 3102(i) | C++20 | 23.7.2.2.1 [span.overview] | Clarifyspan iterator andconst_iterator behavior | Yes | 0 | |
| 3144(i) | C++20 | 23.7.2.2.1 [span.overview] | span does not have aconst_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 | |
| 4397(i) | New | 23.7.2.2.2 [span.cons] | Improvespan(R&& r) | Yes | 3 | |
| 3100(i) | C++20 | 23.7.2.2.2 [span.cons] | Unnecessary and confusing "emptyspan" wording | Yes | 0 | |
| 3101(i) | C++20 | 23.7.2.2.2 [span.cons] | span'sContainer constructors need another constraint | Yes | 1 | |
| 3198(i) | C++20 | 23.7.2.2.2 [span.cons] | Bad constraint onstd::span::span() | Yes | | |
| 3255(i) | C++20 | 23.7.2.2.2 [span.cons] | span'sarray constructor is too strict | Yes | 2 | |
| 3358(i) | C++20 | 23.7.2.2.2 [span.cons] | §[span.cons] is mistaken thatto_address can throw | Yes | 0 | |
| 4404(i) | Tentatively NAD | 23.7.2.2.3 [span.deduct] | Shouldspan(R&&) CTAD apply P2280? | Yes | | |
| 4293(i) | Voting | 23.7.2.2.4 [span.sub] | span::subspan/first/last chooses wrong constructor when T is const-qualified bool | Yes | | |
| 3103(i) | C++20 | 23.7.2.2.4 [span.sub] | Errors in taking subview ofspan 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 thanstd::[ranges::]cbegin/cend | Yes | 0 | |
| 4243(i) | Voting | 23.7.2.3 [span.objectrep] | as_bytes/as_writable_bytes is broken withspan<volatile T> | Yes | 4 | |
| 3995(i) | New | 23.7.3 [views.multidim] | Issue with custom index conversion in<mdspan> | No | 3 | |
| 4275(i) | Voting | 23.7.3.2 [mdspan.syn] | std::dynamic_extent should also be defined in<mdspan> | Yes | 3 | |
| 3970(i) | WP | 23.7.3.2 [mdspan.syn] | §[mdspan.syn] Missing definition offull_extent_t andfull_extent | Yes | | |
| 4020(i) | Voting | 23.7.3.3.2 [mdspan.extents.expo] | extents::index-cast weirdness | Yes | | |
| 4272(i) | Immediate | 23.7.3.4 [mdspan.layout] | Forrank == 0,layout_stride is atypically convertible | Yes | 2 | |
| 4314(i) | New | 23.7.3.4 [mdspan.layout] | Missing move inmdspan layoutmapping::operator() | Yes | 2 | |
| 3876(i) | C++23 | 23.7.3.4 [mdspan.layout] | Default constructor ofstd::layout_XX::mapping misses precondition | Yes | | |
| 4217(i) | WP | 23.7.3.4.2 [mdspan.layout.reqmts] | Clarifymdspan layout mapping requirements forrank == 0 | Yes | | |
| 4266(i) | Voting | 23.7.3.4.7 [mdspan.layout.stride] | layout_stride::mapping should treat empty mappings as exhaustive | Yes | | |
| 3861(i) | Resolved | 23.7.3.4.7 [mdspan.layout.stride] | mdspanlayout_stride::mapping default constructor problem | Yes | 1 | |
| 4372(i) | Voting | 23.7.3.4.8.1 [mdspan.layout.leftpad.overview] | WeakenMandates: for dynamic padding values in padded layouts | Yes | | |
| 4021(i) | New | 23.7.3.6.1 [mdspan.mdspan.overview] | mdspan::is_always_meow() should benoexcept | Yes | 3 | |
| 4405(i) | New | 23.7.3.6.2 [mdspan.mdspan.cons] | mdspan constructor should disallow derived to base conversions | Yes | 3 | |
| 3974(i) | WP | 23.7.3.6.3 [mdspan.mdspan.members] | mdspan::operator[] should not copyOtherIndexTypes | Yes | | |
| 4060(i) | WP | 23.7.3.7.7 [mdspan.sub.sub] | submdspan preconditions do not forbid creating invalid pointer | Yes | | |
| 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 ofindirectly_readable | Yes | 3 | |
| 3736(i) | C++23 | 24.2 [iterator.synopsis] | move_iterator missingdisable_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'scommon_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 functionscbegin/cend | Yes | | |
| 1320(i) | NAD | 24.2 [iterator.synopsis] | Header foriter_swap | Yes | | |
| 1128(i) | NAD Concepts | 24.2 [iterator.synopsis] | Missing definition ofiterator_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] | Isvector<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 | | |
| 4271(i) | Tentatively NAD | 24.3.1 [iterator.requirements.general] | Caching range views claim amortized amortized 𝒪(1) runtimecomplexity for algorithms that are in fact 𝒪(n) | Yes | | |
| 3259(i) | C++20 | 24.3.1 [iterator.requirements.general] | The definition ofconstexpr 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 ofincrementable_traits is under-constrained | Yes | 3 | |
| 3615(i) | New | 24.3.2.1 [incrementable.traits] | The last specialization ofincrementable_traits has wrong operand types | Yes | 3 | |
| 3446(i) | C++23 | 24.3.2.2 [readable.traits] | indirectly_readable_traits ambiguity for types with bothvalue_type andelement_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-onlycpp17-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 anditerator_category | Yes | | |
| 2952(i) | C++20 | 24.3.2.3 [iterator.traits] | iterator_traits should work for pointers tocvT | 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 satisfyinginput_iterator but notequality_comparable look likeC++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 forvoid* 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 ofiter_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 whena is an input iterator? | Yes | | |
| 3279(i) | Resolved | 24.3.4.2 [iterator.concept.readable] | shared_ptr<int>& does not not satisfyreadable | 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 ofweakly_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 requireto_address(I{}) | Yes | | |
| 3607(i) | C++23 | 24.3.4.14 [iterator.concept.contiguous] | contiguous_iterator should not be allowed to have customiter_move anditer_swap behavior | Yes | | |
| 2437(i) | C++17 | 24.3.5.2 [iterator.iterators] | iterator_traits<OutIt>::reference can and can't bevoid | Yes | 3 | |
| 1009(i) | NAD | 24.3.5.2 [iterator.iterators] | InputIterator post-increment dangerous | Yes | | |
| 2962(i) | Open | 24.3.5.3 [input.iterators] | Iterators of Containers of move-only types do not modelInputIterator | Yes | 2 | |
| 484(i) | Open | 24.3.5.3 [input.iterators] | Convertible toT | No | 3 | |
| 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 forincrementable 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] | ConceptForwardIterator 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] | Iteratoroperator-= has gratuitous undefined behaviour | Yes | 2 | |
| 1079(i) | C++11 | 24.3.5.7 [random.access.iterators] | UK-265:RandomAccessIterator'soperator- 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 foroperator- | Yes | | |
| 1010(i) | NAD Concepts | 24.3.5.7 [random.access.iterators] | operator-= should use default in concept | Yes | | |
| 4171(i) | Tentatively NAD | 24.3.6.3 [indirectcallable.indirectinvocable] | P2609R3 breaks code that usesviews::zip andget<T> | No | | |
| 4270(i) | New | 24.3.6.4 [projected] | Diagnose misuse ofstd::projected::operator* | Yes | 3 | |
| 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 beI | Yes | | |
| 3439(i) | New | 24.4.3 [iterator.operations] | "Distance" template parameter is underspecified | No | 3 | |
| 3197(i) | New | 24.4.3 [iterator.operations] | std::prev should not requireBidirectionalIterator | Yes | 3 | |
| 4055(i) | New | 24.4.3 [iterator.operations] | §[iterator.operations]std::distance is missing a precondition | Yes | 4 | |
| 3344(i) | New | 24.4.3 [iterator.operations] | advance(i,most-negative) andprev(i,most-negative) | Yes | 3 | |
| 2931(i) | Open | 24.4.3 [iterator.operations] | Missed optimization opportunity with single-argumentstd::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 callranges::advance(i, s) | Yes | 2 | |
| 4303(i) | New | 24.4.4.3 [range.iter.op.distance] | std::decay_t in the specification ofranges::distance is problematic | Yes | 4 | |
| 4242(i) | WP | 24.4.4.3 [range.iter.op.distance] | ranges::distance does not work with volatile iterators | Yes | | |
| 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 brokestd::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 ofstd::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 useprev 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 overloadoperator& | 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'soperator-> should not require the underlying iterator'soperator-> to be aconst member function | Yes | | |
| 1051(i) | NAD | 24.5.1.6 [reverse.iter.elem] | Specify subscript operation return types ofreverse_iterator andmove_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 ofcurrent[] | 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 useaddressof() | 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 acontiguous_iterator | No | 4 | |
| 3986(i) | New | 24.5.3 [const.iterators] | basic_const_iterator doesn't work withoptional | No | 3 | |
| 3988(i) | Open | 24.5.3 [const.iterators] | Shouldas_const_view andbasic_const_iterator providebase()? | 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 customiter_move | Yes | 3 | |
| 3863(i) | New | 24.5.3.2 [const.iterators.alias] | Isinput_iterator guaranteed to haveiter_const_reference_t? | No | 2 | |
| 4253(i) | Voting | 24.5.3.3 [const.iterators.iterator] | basic_const_iterator should provideiterator_type | Yes | | |
| 4237(i) | New | 24.5.3.3 [const.iterators.iterator] | The standard library iterator adaptor does not handleiterator_category correctly | No | 3 | |
| 3858(i) | NAD | 24.5.3.4 [const.iterators.types] | basic_const_iterator is too strict to provideiterator_category | Yes | | |
| 4218(i) | New | 24.5.3.5 [const.iterators.ops] | Constraint recursion inbasic_const_iterator's relational operators due to ADL + CWG 2369 | Yes | 2 | |
| 3391(i) | C++23 | 24.5.4 [move.iterators] | Problems withcounted_iterator/move_iterator::base() const & | Yes | 2 | |
| 3593(i) | C++23 | 24.5.4 [move.iterators] | Several iterators'base() const & andlazy_split_view::outer-iterator::value_type::end() missingnoexcept | 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 | | |
| 4125(i) | New | 24.5.4.2 [move.iterator] | move_iterator's default constructor should be constrained | Yes | 3 | |
| 4120(i) | New | 24.5.4.2 [move.iterator] | move_iterator should provideiterator_category only when it modelsforward_iterator | Yes | 3 | |
| 680(i) | CD1 | 24.5.4.2 [move.iterator] | move_iteratoroperator-> 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 conditionalnoexcept 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 amove_iterator for amove-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 ofcommon_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 completelyconstexpr-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 classesproxy andpostfix-proxy forcommon_iterator should be fullyconstexpr | 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'spostfix-proxy is not quite right | Yes | | |
| 3601(i) | C++23 | 24.5.5.5 [common.iter.nav] | common_iterator'spostfix-proxy needsindirectly_readable | Yes | | |
| 3748(i) | New | 24.5.5.6 [common.iter.cmp] | common_iterator andcounted_iterator'operator- are missing cast to return type | Yes | 3 | |
| 3953(i) | WP | 24.5.5.7 [common.iter.cust] | iter_move forcommon_iterator andcounted_iterator should returndecltype(auto) | Yes | | |
| 3472(i) | C++23 | 24.5.7 [iterators.counted] | counted_iterator is missing preconditions | Yes | | |
| 4245(i) | WP | 24.5.7.1 [counted.iterator] | Operators that interact withcounted_iterator anddefault_sentinel_t should benoexcept | Yes | | |
| 3543(i) | C++23 | 24.5.7.1 [counted.iterator] | Definition of whencounted_iterators refer to the same sequence isn't quite right | Yes | | |
| 3408(i) | Resolved | 24.5.7.1 [counted.iterator] | LWG 3291 reveals deficiencies incounted_iterator | Yes | 2 | |
| 3389(i) | C++20 | 24.5.7.2 [counted.iter.const] | A move-only iterator still does not have acounted_iterator | Yes | 0 | |
| 3643(i) | C++23 | 24.5.7.5 [counted.iter.nav] | Missingconstexpr instd::counted_iterator | Yes | | |
| 2576(i) | C++17 | 24.6 [stream.iterators] | istream_iterator andostream_iterator should usestd::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 anend-of-stream iterator become anon-end-of-stream one? | Yes | | |
| 245(i) | NAD | 24.6.2 [istream.iterator] | Which operations onistream_iterator trigger input operations? | Yes | | |
| 3600(i) | C++23 | 24.6.2.2 [istream.iterator.cons] | Makingistream_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 ofistream_iterator | Yes | | |
| 2878(i) | C++17 | 24.6.2.2 [istream.iterator.cons] | MissingDefaultConstructible requirement foristream_iterator default constructor | Yes | | |
| 2804(i) | C++17 | 24.6.2.2 [istream.iterator.cons] | Unconditionalconstexpr default constructor foristream_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 ofistream_iterator::operator++(int) | Yes | | |
| 261(i) | CD1 | 24.6.2.3 [istream.iterator.ops] | Missing description ofistream_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 publicexposition-only member | Yes | 4 | |
| 3188(i) | New | 24.6.4 [istreambuf.iterator] | istreambuf_iterator::pointer should not beunspecified | Yes | 3 | |
| 2790(i) | C++17 | 24.6.4 [istreambuf.iterator] | Missing specification ofistreambuf_iterator::operator-> | Yes | 3 | |
| 659(i) | C++11 | 24.6.4 [istreambuf.iterator] | istreambuf_iterator should have anoperator->() | 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 beconst | Yes | 3 | |
| 2544(i) | C++17 | 24.6.4.3 [istreambuf.iterator.cons] | istreambuf_iterator(basic_streambuf<charT, traits>* s) effects unclear whens is0 | 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 inostreambuf_iterator constructor | Yes | | |
| 3537(i) | New | 24.7 [iterator.range] | §[iterator.range] Missingnoexcept forstd::rbegin/rend for arrays andinitializer_list | No | 3 | |
| 4385(i) | New | 24.7 [iterator.range] | Including<simd> doesn't providestd::begin/end | Yes | 3 | |
| 4181(i) | New | 24.7 [iterator.range] | Some ranges have negativessize | No | 3 | |
| 4131(i) | New | 24.7 [iterator.range] | Including<optional> doesn't providestd::begin/end | Yes | 3 | |
| 4387(i) | Open | 24.7 [iterator.range] | Including<stacktrace> doesn't providestd::begin/end | Yes | 3 | |
| 4234(i) | WP | 24.7 [iterator.range] | Including<hive> doesn't providestd::begin/end | Yes | | |
| 3987(i) | WP | 24.7 [iterator.range] | Including<flat_foo> doesn't providestd::begin/end | Yes | | |
| 3009(i) | C++20 | 24.7 [iterator.range] | Including<string_view> doesn't providestd::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-arrayssize 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 beconstexpr andnoexcept | Yes | | |
| 2457(i) | NAD | 24.7 [iterator.range] | std::begin() andstd::end() do not support multi-dimensional arrays correctly | Yes | 3 | |
| 3207(i) | NAD | 24.7 [iterator.range] | N inssize(const T (&)[N]) should besize_t | Yes | | |
| Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates |
|---|
| 4307(i) | New | 25.2 [ranges.syn] | Make good use ofsized-random-access-range andbidirectional-commonin<ranges> | Yes | 4 | |
| 3729(i) | New | 25.2 [ranges.syn] | std::tuple_element_t<std::ranges::subrange<I, S, K>> should remove top-levelcv-qualifiers | Yes | 4 | |
| 4027(i) | WP | 25.2 [ranges.syn] | possibly-const-range should prefer returningconst R& | Yes | 2 | |
| 3914(i) | WP | 25.2 [ranges.syn] | Inconsistenttemplate-head ofranges::enumerate_view | Yes | | |
| 3946(i) | WP | 25.2 [ranges.syn] | The definition ofconst_iterator_t should be reworked | Yes | | |
| 3948(i) | WP | 25.2 [ranges.syn] | possibly-const-range andas-const-pointer should benoexcept | 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 objectskeys andvalues 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 forconst 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 | | |
| 4184(i) | Tentatively NAD | 25.3 [range.access] | Domain ofranges::cmeow doesn't matchranges::meow | No | | |
| 3258(i) | Resolved | 25.3.2 [range.access.begin] | Range access andinitializer_list | Yes | 3 | |
| 3333(i) | NAD | 25.3.4 [range.access.cbegin] | ranges::cbegin/ranges::cend, (and mayberanges::crbegin/ranges::crend) are under-specified to allow rvalue-arrays | Yes | | |
| 3368(i) | Resolved | 25.3.10 [range.prim.size] | Exactly when doessize returnend - begin? | Yes | 0 | |
| 3403(i) | C++23 | 25.3.11 [range.prim.ssize] | Domain ofranges::ssize(E) doesn't matchranges::size(E) | Yes | 2 | |
| 4062(i) | New | 25.3.13 [range.prim.empty] | ranges::empty has no semantic requirements forforward_ranges | No | 3 | |
| 4389(i) | SG9 | 25.4.2 [range.range] | ranges::for_each possibly behaves differently from range-basedfor | Yes | 2 | |
| 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.4 [range.sized] | Semantic requirements ofsized_range is circular | Yes | | |
| 3264(i) | C++20 | 25.4.4 [range.sized] | sized_range andranges::size redundantly usedisable_sized_range | Yes | 1 | |
| 3982(i) | Tentatively NAD | 25.4.5 [range.view] | is-derived-from-view-interface should require thatT is derived fromview_interface<T> | Yes | | |
| 3326(i) | C++20 | 25.4.5 [range.view] | enable_view has false positives | Yes | 0 | |
| 3452(i) | Resolved | 25.4.5 [range.view] | Are views really supposed to have strict𝒪(1) destruction? | Yes | 2 | |
| 3896(i) | New | 25.4.6 [range.refinements] | The definition ofviewable_range is not quite right | Yes | 4 | |
| 3481(i) | C++23 | 25.4.6 [range.refinements] | viewable_range mishandles lvalue move-only views | Yes | 2 | |
| 3375(i) | C++20 | 25.4.6 [range.refinements] | decay inviewable_range should beremove_cvref | Yes | 0 | |
| 3381(i) | C++20 | 25.4.6 [range.refinements] | begin anddata must agree forcontiguous_range | Yes | 0 | |
| 4112(i) | WP | 25.5.2 [range.utility.helpers] | has-arrow should requiredoperator->() to beconst-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 fromview_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 removingsubrange's conversions frompair-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] | Theconst lvalue reference overload ofget forsubrange does not constrainI to becopyable whenN == 0 | Yes | 3 | |
| 3281(i) | C++20 | 25.5.4 [range.subrange] | Conversion frompair-like types tosubrange 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 | |
| 4183(i) | New | 25.5.4.1 [range.subrange.general] | subrange should providedata() | Yes | 4 | |
| 3179(i) | C++20 | 25.5.4.2 [range.subrange.ctor] | subrange should always modelRange | 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 whenn < 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 whatcontainer-inserter does | Yes | | |
| 4121(i) | New | 25.5.7.1 [range.utility.conv.general] | ranges::to constructs associative containers viac.emplace(c.end(), *it) | Yes | 2 | |
| 4229(i) | Tentatively NAD | 25.5.7.2 [range.utility.conv.to] | std::ranges::to with union return type | Yes | | |
| 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 whensized_sentinel_for is satisfied | Yes | 4 | |
| 4381(i) | New | 25.5.7.2 [range.utility.conv.to] | std::ranges::to specification using CTAD not supported by core language | Yes | 2 | |
| 3722(i) | New | 25.5.7.2 [range.utility.conv.to] | ranges::toreserves the wrong size | Yes | 4 | |
| 4008(i) | New | 25.5.7.2 [range.utility.conv.to] | §[range.utility.conv.to]ranges::to may cause infinite recursion ifrange_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 | |
| 3845(i) | New | 25.5.7.2 [range.utility.conv.to] | ranges::to'sfrom_range_t tag branch has the wrong constraint | Yes | 4 | |
| 3985(i) | New | 25.5.7.2 [range.utility.conv.to] | ranges::to shouldMandatesC 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 misusescpp17-input-iterator | Yes | 2 | |
| 3743(i) | C++23 | 25.5.7.2 [range.utility.conv.to] | ranges::to'sreserve 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 parameterC 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 provideempty | Yes | | |
| 3428(i) | C++23 | 25.6.3.2 [range.single.view] | single_view's in place constructor should be explicit | Yes | 0 | |
| 4417(i) | New | 25.6.4.1 [range.iota.overview] | views::indices is underconstrained | Yes | | |
| 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 provideempty | Yes | | |
| 3523(i) | C++23 | 25.6.4.2 [range.iota.view] | iota_view::sentinel is not alwaysiota_view's sentinel | Yes | | |
| 3597(i) | C++23 | 25.6.4.2 [range.iota.view] | Unsigned integer types don't modeladvanceable | 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 ofiota_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 binaryoperator+ 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 wrongiterator_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-subtractableiterator andsentinel 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 arepeat_view should repeat the view | Yes | | |
| 3955(i) | New | 25.6.5.2 [range.repeat.view] | Addnoexcept to severalrepeat_view[::iterator] member functions | Yes | 3 | |
| 4053(i) | WP | 25.6.5.2 [range.repeat.view] | Unary call tostd::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 missingPostconditions | 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 provideiterator_category when itsdifference_type is not an integer-class type? | Yes | 3 | |
| 3679(i) | LEWG | 25.6.6 [range.istream] | Is<ranges> sufficient foristream_view? | No | 3 | |
| 3568(i) | C++23 | 25.6.6.2 [range.istream.view] | basic_istream_view needs to initializevalue_ | Yes | | |
| 3489(i) | New | 25.6.6.3 [range.istream.iterator] | Improveistream_view wording | Yes | 3 | |
| 3397(i) | C++20 | 25.6.6.3 [range.istream.iterator] | ranges::basic_istream_view::iterator should not provideiterator_category | Yes | 1 | |
| 3394(i) | NAD | 25.6.6.3 [range.istream.iterator] | ranges::basic_istream_view::iterator has an emptyiterator_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 tostd::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 forsemiregular-box | Yes | 0 | |
| 3572(i) | C++23 | 25.7.3 [range.move.wrap] | copyable-box should be fullyconstexpr | 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 forref-view | Yes | 0 | |
| 4099(i) | New | 25.7.7.1 [range.as.rvalue.overview] | The simple case ofviews::as_rvalue andviews::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] | Makebase() const & consistent across iterator wrappers that supportsinput_iterators | Yes | | |
| 3325(i) | C++20 | 25.7.9.2 [range.transform.view] | Constrain return type of transformation function fortransform_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 anditer_swap are inconsistent fortransform_view::iterator | Yes | 2 | |
| 3555(i) | C++23 | 25.7.9.3 [range.transform.iterator] | {transform,elements}_view::iterator::iterator_conceptshould 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 anditerator_category should useconst F& | Yes | 2 | |
| 3618(i) | C++23 | 25.7.9.3 [range.transform.iterator] | Unnecessaryiter_move fortransform_view::iterator | Yes | | |
| 3301(i) | C++20 | 25.7.9.3 [range.transform.iterator] | transform_view::iterator has incorrectiterator_category | Yes | 1 | |
| 3448(i) | C++23 | 25.7.9.4 [range.transform.sentinel] | transform_view'ssentinel<false> not comparable withiterator<true> | Yes | 1 | |
| 3384(i) | C++20 | 25.7.9.4 [range.transform.sentinel] | transform_view::sentinel has an incorrectoperator- | Yes | 0 | |
| 4050(i) | Tentatively NAD | 25.7.10.1 [range.take.overview] | Shouldviews::iota(0) | views::take(5) beviews::iota(0, 5)? | Yes | | |
| 4214(i) | New | 25.7.10.1 [range.take.overview] | MissingPreconditions fortake/drop adaptor | Yes | 3 | |
| 3407(i) | C++23 | 25.7.10.1 [range.take.overview] | Some problems with the wording changes ofP1739R4 | Yes | 2 | |
| 3447(i) | C++23 | 25.7.10.2 [range.take.view] | Deduction guides fortake_view anddrop_view have different constraints | Yes | 0 | |
| 3738(i) | C++23 | 25.7.10.2 [range.take.view] | Missing preconditions fortake_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 toranges::begin on an input range | Yes | 0 | |
| 3449(i) | C++23 | 25.7.10.3 [range.take.sentinel] | take_view andtake_while_view'ssentinel<false> not comparable with their const iterator | Yes | 1 | |
| 3737(i) | C++23 | 25.7.10.3 [range.take.sentinel] | take_view::sentinel should provideoperator- | Yes | 3 | |
| 3450(i) | C++23 | 25.7.11.2 [range.take.while.view] | Theconst overloads oftake_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 requireviewable_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) | Tentatively NAD | 25.7.12.2 [range.drop.view] | drop_view::begin const may have 𝒪(n) complexity | Yes | 3 | |
| 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'sconst begin should additionally requiresized_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 ofsized_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] | Nestingjoin_views is broken because of CTAD | Yes | | |
| 4220(i) | New | 25.7.14.2 [range.join.view] | join_view incorrectly stores inner range | Yes | 3 | |
| 4401(i) | LEWG | 25.7.14.2 [range.join.view] | join_view should besized_range when applied to ranges ofsimd::vec | Yes | 3 | |
| 3700(i) | Resolved | 25.7.14.2 [range.join.view] | Theconst begin of thejoin_view family does not requireInnerRng to be a range | Yes | 3 | |
| 3322(i) | Resolved | 25.7.14.2 [range.join.view] | Addjoin_view::base() member function | Yes | 0 | |
| 3278(i) | Resolved | 25.7.14.2 [range.join.view] | join_view<V>::iterator<true> tries to write throughconst 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'siter_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] | Renameref-is-glvalue toderef-is-ref | Yes | 0 | |
| 3873(i) | New | 25.7.15.2 [range.join.with.view] | join_with_view'sconst 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 injoin_with_view's iterator | Yes | 3 | |
| 3852(i) | New | 25.7.15.3 [range.join.with.iterator] | join_with_view::iterator'siter_move anditer_swap should be conditionallynoexcept | Yes | 3 | |
| 3972(i) | New | 25.7.15.3 [range.join.with.iterator] | Issues withjoin_with_view::iterator'siter_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] | Inlazy_split_view, CTAD doesn't work when given aninput_range input and atiny-range pattern | Yes | 3 | |
| 3599(i) | New | 25.7.16.2 [range.lazy.split.view] | Theconst overload oflazy_split_view::begin should be constrained byconst Pattern | Yes | 3 | |
| 4108(i) | SG9 | 25.7.16.2 [range.lazy.split.view] | lazy_split_view should besized_range when pattern is emptytiny-range | Yes | 4 | |
| 3592(i) | C++23 | 25.7.16.2 [range.lazy.split.view] | lazy_split_view needs to check the simpleness ofPattern | Yes | | |
| 4249(i) | New | 25.7.16.3 [range.lazy.split.outer] | The past end issue forlazy_split_view | Yes | 2 | |
| 3686(i) | New | 25.7.16.3 [range.lazy.split.outer] | Inlazy_split_view, comparing a default-constructedouter-iterator orinner-iterator withstd::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'sconst-converting constructor isn't settingtrailing_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 insplit_view::outer-iterator::value_type::begin() | Yes | | |
| 3276(i) | C++20 | 25.7.16.4 [range.lazy.split.outer.value] | Classsplit_view::outer_iterator::value_type should inherit fromview_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 onBase | 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 ofstd::views::split on an empty range | Yes | 3 | |
| 4082(i) | WP | 25.7.18.1 [range.concat.overview] | views::concat(r) is well-formed whenr is anoutput_range | Yes | | |
| 4166(i) | Voting | 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'siter_swap is overconstrained | Yes | 3 | |
| 4079(i) | WP | 25.7.18.3 [range.concat.iterator] | MissingPreconditions inconcat_view::iterator's conversion constructor | Yes | | |
| 4012(i) | WP | 25.7.20.2 [range.common.view] | common_view::begin/end are missing thesimple-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 improverandom_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 whenranges::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 requiresrange<const V> | Yes | 0 | |
| 3811(i) | C++23 | 25.7.22.1 [range.as.const.overview] | views::as_const onref_view<T> should returnref_view<const T> | Yes | | |
| 3850(i) | C++23 | 25.7.22.1 [range.as.const.overview] | views::as_const onempty_view<T> should returnempty_view<const T> | Yes | | |
| 3386(i) | C++20 | 25.7.23 [range.elements] | elements_view needs its ownsentinel 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() andelements_view::end() have incompatibleconstraints | Yes | 1 | |
| 3323(i) | C++20 | 25.7.23.2 [range.elements.view] | has-tuple-element helper concept needsconvertible_to | Yes | 0 | |
| 4114(i) | New | 25.7.23.3 [range.elements.iterator] | elements_view::iterator::operator* missing conditionalnoexcept specification | Yes | 3 | |
| 3832(i) | New | 25.7.23.3 [range.elements.iterator] | Missing change forelement_view::iterator in LWG 3798 | Yes | 3 | |
| 3492(i) | C++23 | 25.7.23.3 [range.elements.iterator] | Minimal improvements toelements_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 firstoperator- 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 andcartesian_product_view::iterator should not always provideiterator_category | Yes | 3 | |
| 3912(i) | WP | 25.7.24.3 [range.enumerate.iterator] | enumerate_view::iterator::operator- should benoexcept | 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 andadjacent_view are underconstrained | Yes | 3 | |
| 3755(i) | C++23 | 25.7.25.2 [range.zip.view] | tuple-for-each can call user-definedoperator, | Yes | | |
| 3692(i) | C++23 | 25.7.25.3 [range.zip.iterator] | zip_view::iterator'soperator<=> is overconstrained | Yes | | |
| 3773(i) | C++23 | 25.7.26.1 [range.zip.transform.overview] | views::zip_transform still requiresF to becopy_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 beexplicit | Yes | 4 | |
| 3702(i) | C++23 | 25.7.26.3 [range.zip.transform.iterator] | Shouldzip_transform_view::iterator removeoperator<? | 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 andslide_view missingbase accessor | Yes | | |
| 3947(i) | WP | 25.7.28.2 [range.adjacent.transform.view] | Unexpected constraints onadjacent_transform_view::base() | Yes | | |
| 3710(i) | C++23 | 25.7.29.2 [range.chunk.view.input] | Theend ofchunk_view for input ranges can beconst | Yes | | |
| 3712(i) | C++23 | 25.7.29.2 [range.chunk.view.input] | chunk_view andslide_view should not bedefault_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 provideempty | Yes | | |
| 4236(i) | WP | 25.7.29.4 [range.chunk.outer.value] | chunk_view::outer-iterator::value_type should providereserve_hint | 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 customiter_move anditer_swap | Yes | | |
| 3880(i) | C++23 | 25.7.29.7 [range.chunk.fwd.iter] | Clarifyoperator+= complexity for{chunk,stride}_view::iterator | Yes | | |
| 3711(i) | C++23 | 25.7.30.2 [range.slide.view] | Missing preconditions forslide_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 | | |
| 4254(i) | New | 25.7.32.3 [range.stride.iterator] | stride_view::iterator should provideoperator-> | Yes | 3 | |
| 3760(i) | C++23 | 25.7.33 [range.cartesian] | cartesian_product_view::iterator'sparent_ is never valid | Yes | | |
| 3777(i) | Open | 25.7.33.2 [range.cartesian.view] | Commoncartesian_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 | | |
| 4235(i) | WP | 25.7.34.2 [range.cache.latest.view] | cache_latest_view andto_input_view missreserve_hint | Yes | 2 | |
| 4210(i) | New | 25.7.34.3 [range.cache.latest.iterator] | Issue withcache_latest_view::iterator's reference type | No | 3 | |
| 4226(i) | New | 25.7.35 [range.to.input] | to_input_view::iterator cannot be compared to itsconst sentinel | Yes | 2 | |
| 4418(i) | New | 25.8.5 [coro.generator.promise] | co_yield elements_of(vector<int>()) does not compile | Yes | 2 | |
| 3899(i) | WP | 25.8.5 [coro.generator.promise] | co_yielding elements of an lvaluegenerator is unnecessarily inefficient | Yes | 3 | |
| 3900(i) | WP | 25.8.5 [coro.generator.promise] | Theallocator_arg_t overloads ofgenerator::promise_type::operator newshould 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 nestedgenerator 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 benoexcept | Yes | | |
| 3826(i) | C++23 | 25.8.5 [coro.generator.promise] | Redundant specification [for overload ofyield_value] | Yes | | |
| 4057(i) | New | 25.8.6 [coro.generator.iterator] | generator::iterator'soperator* is notnoexcept when it can be | Yes | 3 | |
| 4117(i) | New | 25.8.6 [coro.generator.iterator] | generator::iterator should provideiterator_concept | Yes | 4 | |
| 3762(i) | C++23 | 25.8.6 [coro.generator.iterator] | generator::iterator::operator== should pass by reference | Yes | | |
| 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 ofoperator + 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 withInputIterators | Yes | | |
| 1282(i) | NAD | 26 [algorithms] | A proposal to addstd::split algorithm | Yes | | |
| 1053(i) | NAD | 26 [algorithms] | Unify algorithms with operator and function object variants | Yes | | |
| 631(i) | NAD | 26 [algorithms] | conflicting requirements forBinaryPredicate | Yes | | |
| 2082(i) | NAD | 26 [algorithms] | Misleading complexity requirements in<algorithm> | Yes | | |
| 2727(i) | C++17 | 26.1 [algorithms.general] | Parallel algorithms withconstexpr specifier | Yes | 0 | |
| 4277(i) | New | 26.2 [algorithms.requirements] | §[algorithms.requirements] It is unclear what an algorithm is | Yes | 4 | |
| 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] | Unnecessarydecay_t inis_execution_policy_v should beremove_cvref_t | Yes | 0 | |
| 4273(i) | New | 26.3.6 [execpol] | Standard execution policy types should be conventional tag class types | Yes | 3 | |
| 2909(i) | NAD | 26.3.6.2 [execpol.type] | User specializations ofis_execution_policy should be ill-formed | Yes | | |
| 4297(i) | Voting | 26.4 [algorithm.syn] | Missingpermutable constraint for iterator overloads in Parallel Range Algorithms | 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 forranges::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 | |
| 4241(i) | LEWG | 26.6.5 [alg.foreach] | ranges::for_each(_n) should be less constrained | Yes | 3 | |
| 2747(i) | C++17 | 26.6.5 [alg.foreach] | Possibly redundantstd::move in [alg.foreach] | Yes | 0 | |
| 1110(i) | C++11 | 26.6.5 [alg.foreach] | Isfor_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 andcopy_n missing requirements forSize | 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] | Mustfind's third argument be CopyConstructible? | Yes | | |
| 2150(i) | C++14 | 26.6.8 [alg.find.end] | Unclear specification offind_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 andranges::is_permutation should short-circuit forsized_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 | | |
| 4179(i) | WP | 26.6.15 [alg.search] | Wrong range in [alg.search] | 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 andranges::ends_with are underspecified | Yes | | |
| 4105(i) | WP | 26.6.17 [alg.ends.with] | ranges::ends_with'sReturns misses difference casting | Yes | | |
| 4093(i) | New | 26.6.18 [alg.fold] | ranges::fold_left_first_with_iter incorrectly constructsoptional<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 unintentionallyconst_cast andreinterpret_cast | Yes | | |
| 4262(i) | New | 26.7.1 [alg.copy] | copy_if,remove_copy,remove_copy_if,unique_copy have too strong preconditions | Yes | 3 | |
| 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 ofInputIterator increments unspecified | No | 3 | |
| 2689(i) | C++17 | 26.7.1 [alg.copy] | Parallel versions ofstd::copy andstd::move shouldn't be in order | Yes | 0 | |
| 2039(i) | C++14 | 26.7.1 [alg.copy] | Issues withstd::reverse andstd::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 formove_backward andcopy_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 | | |
| 4444(i) | Immediate | 26.7.5 [alg.replace] | Fix default template arguments forranges::replace andranges::replace_if | Yes | | |
| 3868(i) | LEWG | 26.7.5 [alg.replace] | Constrained algorithms should not requireoutput_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] | IncorrectOutputIterator concept requirements forreplace 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, andpartial_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 | | |
| 4269(i) | Voting | 26.7.9 [alg.unique] | unique_copy passes arguments to its predicate backwards | Yes | | |
| 4103(i) | New | 26.7.9 [alg.unique] | ranges::unique_copy's constraints for the case whereresult is aninput_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 requireEquivalenceRelation | 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 | | |
| 2074(i) | C++14 | 26.7.10 [alg.reverse] | Off by one error instd::reverse_copy | Yes | | |
| 223(i) | TC1 | 26.7.10 [alg.reverse] | reverse algorithm should use iter_swap rather than swap | Yes | | |
| 2985(i) | Resolved | 26.7.10 [alg.reverse] | std::reverse should be permitted to be vectorized | Yes | | |
| 4441(i) | Immediate | 26.7.11 [alg.rotate] | ranges::rotate do not handle sized-but-not-sized-sentinel ranges correctly | Yes | | |
| 3759(i) | C++23 | 26.7.11 [alg.rotate] | ranges::rotate_copy should usestd::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 whenmiddle == first | Yes | | |
| 2716(i) | C++17 | 26.7.12 [alg.random.sample] | Specification ofshuffle andsample disallows lvalueURNGs | 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 forrandom_shuffle algorithm | Yes | | |
| 1433(i) | Dup | 26.7.13 [alg.random.shuffle] | random_shuffle andshuffle 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 forcomp | Yes | 0 | |
| 556(i) | C++11 | 26.8 [alg.sorting] | IsCompare aBinaryPredicate? | 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 ofnth_element is underspecified | Yes | 3 | |
| 2339(i) | C++14 | 26.8.3 [alg.nth.element] | Wording issue innth_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 ofbinary_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 | 4 | |
| 4196(i) | WP | 26.8.6 [alg.merge] | Complexity ofinplace_merge() is incorrect | Yes | 4 | |
| 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 algorithmincludes | 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 requireCopyConstructible predicate | Yes | | |
| 3534(i) | LEWG | 26.8.7.4 [set.intersection] | ranges::set_intersection andranges::set_difference algorithm requirements are too strict | Yes | 3 | |
| 3032(i) | C++23 | 26.8.8 [alg.heap.operations] | ValueSwappable requirement missing forpush_heap andmake_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 forstd::sort_heap | Yes | 3 | |
| 4167(i) | New | 26.8.9 [alg.min.max] | Use of "smaller" and "larger" inmin,max, andminmax is unclear | Yes | 3 | |
| 4034(i) | New | 26.8.9 [alg.min.max] | Clarify specification ofstd::min andstd::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 frommax_element()'s should be noted | Yes | 3 | |
| 2369(i) | C++17 | 26.8.9 [alg.min.max] | constexpr max(initializer_list) vsmax_element | Yes | 3 | |
| 2350(i) | C++14 | 26.8.9 [alg.min.max] | min,max, andminmax should beconstexpr | 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 withinitializer_list should returnpair ofT, notpair ofconst T& | Yes | | |
| 1013(i) | NAD Editorial | 26.8.9 [alg.min.max] | RemoveIsSameType hold-over constraints | Yes | | |
| 1434(i) | NAD Editorial | 26.8.9 [alg.min.max] | Formin/max functions replace variadic arguments byinitializer_list argument | Yes | | |
| 1308(i) | NAD | 26.8.9 [alg.min.max] | Concerns aboutinitializer_list overloads ofmin,max, andminmax | 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 oflexicographical_compare_three_way | Yes | 0 | |
| 3061(i) | Resolved | 26.8.12 [alg.three.way] | What is the return type ofcompare_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 instd::accumulate and other algorithms | Yes | 3 | |
| 2924(i) | Resolved | 26.10 [numeric.ops] | AnExecutionPolicy overload forinner_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 ininner_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 andadjacent_difference should mention requirements | Yes | | |
| 3060(i) | New | 26.10.8 [exclusive.scan] | XXX_scan algorithms are specified to work with move-onlyT, but are specified to makeN copies ofT 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 fortransform_inclusive_scan without initial value | Yes | 3 | |
| 3058(i) | C++20 | 26.10.12 [adjacent.difference] | Paralleladjacent_difference shouldn't require creating temporaries | Yes | 3 | |
| 2919(i) | Resolved | 26.10.12 [adjacent.difference] | The specification foradjacent_difference has baked-in sequential semantics | Yes | | |
| 871(i) | C++11 | 26.10.13 [numeric.iota] | Iota's requirements onT are too strong | Yes | | |
| 2837(i) | C++17 | 26.10.14 [numeric.ops.gcd] | gcd andlcm should support a wider range of input values | Yes | 0 | |
| 2759(i) | C++17 | 26.10.14 [numeric.ops.gcd] | gcd /lcm andbool for the WP | Yes | | |
| 4265(i) | Voting | 26.10.16 [numeric.ops.midpoint] | std::midpoint should not acceptconst bool | Yes | | |
| 3200(i) | C++20 | 26.10.16 [numeric.ops.midpoint] | midpoint should not constrainT 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 overloadedoperator& | 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 | | |
| 4452(i) | New | 26.11.1 [specialized.algorithms.general] | Makederef-move constexpr | Yes | | |
| 3870(i) | C++23 | 26.11.1 [specialized.algorithms.general] | Removevoidify | 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, andranges::destroy_n should usestd::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 forstd::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 ofstd::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 onqsort andbsearch | 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 | | |
| 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 forbasic_string::value_type | No | 4 | |
| 1170(i) | C++11 | 27.1 [strings.general] | Stringchar-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 forbasic_string andbasic_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 ofchar_traits | Yes | | |
| 4152(i) | New | 27.2.2 [char.traits.require] | The primary template ofstd::char_traits is totally underspecified | Yes | 4 | |
| 3694(i) | New | 27.2.2 [char.traits.require] | Shouldtraits_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 ofconst char_type& in standard specializations ofstd::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] Thechar_traits specializations should declare theirlength(),compare(), andfind() 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] | Freestandingstd::char_traits<char>::eof depends on non-freestandingEOF | 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 toPOS_T andOFF_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 astd::span orstd::basic_string_view is not clear | No | 3 | |
| 2883(i) | LEWG | 27.3 [string.view] | The standard library should providestring_view parameters instead or in addition for functions defined withchar const * orstring const & as parameter types. | No | 4 | |
| 2778(i) | C++17 | 27.3 [string.view] | basic_string_view is missingconstexpr | Yes | 0 | |
| 2780(i) | Resolved | 27.3 [string.view] | basic_string_view::copy is missingconstexpr | 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 rvaluebasic_string tobasic_string_view | Yes | 2 | |
| 4410(i) | New | 27.3.3.2 [string.view.cons] | basic_string_view(It begin, End end) is underconstrained | Yes | 4 | |
| 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] | MissingThrows element forbasic_string_view(It begin, End end) | Yes | | |
| 3581(i) | C++23 | 27.3.3.2 [string.view.cons] | The range constructor makesbasic_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_withEffects are incorrect | Yes | 0 | |
| 2777(i) | C++17 | 27.3.3.8 [string.view.ops] | basic_string_view::copy should usechar_traits::copy | Yes | 0 | |
| 3432(i) | C++23 | 27.3.4 [string.view.comparison] | Missing requirement forcomparison_category | Yes | 0 | |
| 2755(i) | C++17 | 27.3.5 [string.view.io] | §[string.view.io] uses non-existentbasic_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 frombasic_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] | Morenoexcept issues inbasic_string | Yes | | |
| 2268(i) | C++14 | 27.4.3 [basic.string] | Setting a default argument in the declaration of a member functionassign ofstd::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 onbasic_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 benoexcept | 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-constdata() | 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] | Allstarts_with() overloads should be called "begins_with" | Yes | 2 | |
| 2372(i) | NAD | 27.4.3 [basic.string] | Assignment from int tostd::string | Yes | 4 | |
| 4(i) | NAD | 27.4.3 [basic.string] | basic_stringsize_type anddifference_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 ofcharT* | 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] | Arestd::basic_string'siterator andconst_iterator constexpr iterators? | Yes | | |
| 2861(i) | C++17 | 27.4.3.2 [string.require] | basic_string should require thatcharT matchtraits::char_type | Yes | | |
| 2760(i) | C++17 | 27.4.3.2 [string.require] | non-constbasic_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] | Inconsistentstring interface takingstring_view | Yes | 1 | |
| 2583(i) | C++17 | 27.4.3.3 [string.cons] | There is no way to supply an allocator forbasic_string(str, pos) | Yes | 0 | |
| 2069(i) | C++14 | 27.4.3.3 [string.cons] | Inconsistent exception spec forbasic_string move constructor | Yes | | |
| 2235(i) | C++14 | 27.4.3.3 [string.cons] | Undefined behavior without proper requirements onbasic_string constructors | Yes | | |
| 3111(i) | Resolved | 27.4.3.3 [string.cons] | Too strong precondition onbasic_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 useAllocator() | Yes | 3 | |
| 2319(i) | NAD | 27.4.3.3 [string.cons] | basic_string's move constructor should not benoexcept | 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= orassign? | 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 forcbegin /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 forcapacity() | 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 betweenbasic_string reserve andvector/unordered_map/unordered_set reserve functions | Yes | 3 | |
| 3579(i) | NAD | 27.4.3.5 [string.capacity] | Complexity guarantees forresize() andappend() functions across the library | Yes | 3 | |
| 104(i) | NAD | 27.4.3.5 [string.capacity] | Description of basic_string::operator[] is unclear | Yes | | |
| 4378(i) | New | 27.4.3.6 [string.access] | Inconsistency betweenstd::basic_string'sdata() andoperator[] specification | Yes | 4 | |
| 2475(i) | C++17 | 27.4.3.6 [string.access] | Allow overwriting ofstd::basic_string terminator withcharT() 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 inbasic_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 useconst_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 |
| 4259(i) | New | 27.4.3.8.2 [string.find] | P1148R0 changed the return values of searching functions ofstd::basic_string on some platforms | Yes | 3 | |
| 4261(i) | New | 27.4.3.8.2 [string.find] | P1206R7 broke uses of container adaptors with old custom sequence containers | No | 3 | |
| 3752(i) | NAD | 27.4.3.8.3 [string.substr] | Shouldstring::substr forward the allocator to the newly created string? | Yes | | |
| 2771(i) | C++17 | 27.4.3.8.4 [string.compare] | BrokenEffects of somebasic_string::compare functions in terms ofbasic_string_view | Yes | 1 | |
| 1138(i) | C++11 | 27.4.4.1 [string.op.plus] | Unusual return value foroperator+ | Yes | | |
| 2852(i) | NAD | 27.4.4.2 [string.cmp] | Specifications ofoperator== forstd::basic_strings andstd::basic_string_views aredifficult 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 withbasic_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 betweenostream::write andostream::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 (andnot copy) their predicate object | Yes | 3 | |
| 2403(i) | C++17 | 27.4.5 [string.conversions] | stof() should callstrtof() andwcstof() | 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 forto_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] | Inconsistentto_string overloads | Yes | | |
| 3705(i) | C++23 | 27.4.6 [basic.string.hash] | Hashability shouldn't depend onbasic_string's allocator | Yes | | |
| 2978(i) | C++20 | 27.4.6 [basic.string.hash] | Hash support forpmr::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 thatstd::launder is not needed when using the result ofstd::memcpy | Yes | 3 | |
| 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 andformat_to_n_result need the "we really mean what we say" wording | Yes | 0 | |
| 4421(i) | New | 28.2.2 [charconv.to.chars] | Clarify the output encoding ofto_chars for integers | Yes | 3 | |
| 4430(i) | New | 28.2.3 [charconv.from.chars] | from_chars should not parse"0b" base prefixes | Yes | | |
| 3456(i) | New | 28.2.3 [charconv.from.chars] | Pattern used bystd::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 pointfrom_chars API does not distinguish between overflow and underflow | Yes | 2 | |
| 3080(i) | C++20 | 28.2.3 [charconv.from.chars] | Floating pointfrom_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 andOutputIterator template parameters need to be concept constraints | Yes | | |
| 1298(i) | C++11 | 28.3.2 [locale.syn] | Missing specialization ofctype_byname<char> | Yes | | |
| 3353(i) | New | 28.3.3.1 [locale] | locale's copy assignment operator should returnlocale& | 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 ofhas_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 providedFacet is anullptr | Yes | 3 | |
| 3673(i) | Resolved | 28.3.3.1.3 [locale.cons] | §[locale.cons] Ambiguous argument inThrows for locale+name+category constructor | Yes | 3 | |
| 3676(i) | Resolved | 28.3.3.1.3 [locale.cons] | Name of locale composed usingstd::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 bystd::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 ofctype_base are not yet required to be usable in constant expressions | Yes | | |
| 473(i) | C++11 | 28.3.4.2.2 [locale.ctype] | underspecifiedctype 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 inscan_is() semantics | Yes | | |
| 417(i) | NAD | 28.3.4.2.2.3 [locale.ctype.virtuals] | what doesctype::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 innarrow() 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 acodecvt facet always convert one internal character at a time? | Yes | | |
| 75(i) | TC1 | 28.3.4.2.5 [locale.codecvt] | Contradiction incodecvt::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 forcodecvt::do_max_length | Yes | | |
| 138(i) | NAD | 28.3.4.2.5 [locale.codecvt] | Classctype_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 |
| 4287(i) | New | 28.3.4.2.5.3 [locale.codecvt.virtuals] | §[locale.codecvt.virtuals]do_in anddo_out could do with better specification | Yes | 3 | |
| 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 forcodecvt<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) | Tentatively NAD | 28.3.4.3.2.3 [facet.num.get.virtuals] | Can the overload ofstd::num_get::do_get forbool call the overload forlong? | 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 withstrto* | 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] | interpretingthousands_sep after adecimal_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] | Missingdouble specifier fordo_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 | | |
| 4216(i) | New | 28.3.4.3.3.3 [facet.num.put.virtuals] | num_put::do_put andvoid pointers | Yes | 3 | |
| 2703(i) | New | 28.3.4.3.3.3 [facet.num.put.virtuals] | No provision for fill-padding whenboolalpha is set | No | 3 | |
| 2702(i) | New | 28.3.4.3.3.3 [facet.num.put.virtuals] | num_put::do_put(..., bool) performs ill-formeddo_put call | No | 3 | |
| 2117(i) | Open | 28.3.4.3.3.3 [facet.num.put.virtuals] | ios_base manipulators should haveshowgrouping/noshowgrouping | No | 3 | |
| 4084(i) | WP | 28.3.4.3.3.3 [facet.num.put.virtuals] | std::fixed ignoresstd::uppercase | Yes | 3 | |
| 2293(i) | C++14 | 28.3.4.3.3.3 [facet.num.put.virtuals] | Wrong facet used bynum_put::do_put | Yes | 0 | |
| 671(i) | C++11 | 28.3.4.3.3.3 [facet.num.put.virtuals] | precision ofhexfloat | 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 | | |
| 4285(i) | New | 28.3.4.6.2.2 [locale.time.get.members] | time_get::do_get_date is problematic even after LWG 461 | Yes | 3 | |
| 3275(i) | New | 28.3.4.6.2.3 [locale.time.get.virtuals] | Why doestime_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 ofmoney_base::space andmoney_base::none onmoney_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 inmoney_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 anddo_put: U+0020 versusfill | Yes | 3 | |
| 670(i) | Dup | 28.3.4.7.4 [locale.moneypunct] | money_base::pattern andspace | 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 | | |
| 4263(i) | New | 28.5 [format] | What shouldstd::format_to etc. behave when the output is overlong? | No | 3 | |
| 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] | Addoperator== toformat_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] | Arestd::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 whencharT iswchar_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) | Open | 28.5.2.2 [format.string.std] | Underspecified use of locale facets for locale-dependentstd::format | Yes | 3 | |
| 3612(i) | C++23 | 28.5.2.2 [format.string.std] | Inconsistent pointer alignment instd::format | Yes | | |
| 3648(i) | C++23 | 28.5.2.2 [format.string.std] | format should not printbool with'c' | Yes | | |
| 3720(i) | C++23 | 28.5.2.2 [format.string.std] | Restrict the valid types ofarg-id forwidth andprecision instd-format-spec | Yes | 2 | |
| 3721(i) | C++23 | 28.5.2.2 [format.string.std] | Allow anarg-id with a value of zero forwidth instd-format-spec | Yes | 3 | |
| 3242(i) | C++20 | 28.5.2.2 [format.string.std] | std::format: missing rules forarg-id inwidth andprecision | 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] | Arestd::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 instd::format | Yes | 2 | |
| 3639(i) | Resolved | 28.5.2.2 [format.string.std] | Handling of fill character width is underspecified instd::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 instd::format_to? | No | 4 | |
| 3539(i) | C++23 | 28.5.5 [format.functions] | format_to must not copy models ofoutput_iterator<const charT&> | Yes | | |
| 3619(i) | C++23 | 28.5.5 [format.functions] | Specification ofvformat_to contains ill-formedformatted_size calls | Yes | | |
| 3340(i) | C++20 | 28.5.5 [format.functions] | Formatting functions should throw on argument/format string mismatch in §[format.functions] | Yes | | |
| 3372(i) | C++20 | 28.5.5 [format.functions] | vformat_to should not try to deduceOut twice | Yes | 0 | |
| 3336(i) | Resolved | 28.5.5 [format.functions] | How doesstd::vformat handle exception thrown by formatters? | Yes | 2 | |
| 3993(i) | New | 28.5.6.1 [formatter.requirements] | Theparse function of aBasicFormatter type needs to beconstexpr | Yes | 3 | |
| 3462(i) | C++23 | 28.5.6.1 [formatter.requirements] | §[formatter.requirements]: Formatter requirements forbid use offc.arg() | Yes | 3 | |
| 3636(i) | C++23 | 28.5.6.1 [formatter.requirements] | formatter<T>::format should beconst-qualified | Yes | 1 | |
| 3776(i) | NAD | 28.5.6.1 [formatter.requirements] | Avoid parsingformat-spec if it is not present or empty | Yes | 3 | |
| 4240(i) | New | 28.5.6.3 [format.formattable] | The formattable type is not aformattable type | Yes | 2 | |
| 3943(i) | New | 28.5.6.3 [format.formattable] | Clarify lifetime requirements ofBasicFormatter andFormatter | Yes | 3 | |
| 3925(i) | WP | 28.5.6.3 [format.formattable] | Conceptformattable's definition is incorrect | Yes | | |
| 3806(i) | NAD | 28.5.6.3 [format.formattable] | Should conceptformattable<T, charT> default tochar? | Yes | 2 | |
| 4146(i) | New | 28.5.6.4 [format.formatter.spec] | §[format.formatter.spec]/3 unconditionally enables nonlocking for container adaptors | Yes | 2 | |
| 3706(i) | New | 28.5.6.4 [format.formatter.spec] | How doesstd::format work with character arrays of unknown bound? | No | 3 | |
| 4284(i) | LEWG | 28.5.6.4 [format.formatter.spec] | Integer-class types should be formattable | Yes | 3 | |
| 3944(i) | WP | 28.5.6.4 [format.formatter.spec] | Formatters converting sequences ofchar to sequences ofwchar_t | Yes | 3 | |
| 3701(i) | C++23 | 28.5.6.4 [format.formatter.spec] | Makeformatter<remove_cvref_t<const charT[N]>, charT> requirement explicit | Yes | | |
| 3833(i) | C++23 | 28.5.6.4 [format.formatter.spec] | Remove specializationtemplate<size_t N> struct formatter<const charT[N], charT> | Yes | 2 | |
| 3965(i) | WP | 28.5.6.5 [format.string.escaped] | Incorrect example in [format.string.escaped] p3 for formatting of combining characters | Yes | | |
| 4142(i) | WP | 28.5.6.6 [format.parse.ctx] | format_parse_context::check_dynamic_spec should require at least one type | Yes | | |
| 3825(i) | C++23 | 28.5.6.6 [format.parse.ctx] | Missing compile-time argumentid check inbasic_format_parse_context::next_arg_id | Yes | | |
| 4061(i) | WP | 28.5.6.7 [format.context] | Shouldstd::basic_format_context be default-constructible/copyable/movable? | Yes | | |
| 3975(i) | WP | 28.5.6.7 [format.context] | Specializations ofbasic_format_context should not be permitted | Yes | 3 | |
| 3567(i) | C++23 | 28.5.6.7 [format.context] | Formatting move-only iterators take two | Yes | | |
| 3654(i) | C++23 | 28.5.6.7 [format.context] | basic_format_context::arg(size_t) should benoexcept | Yes | | |
| 4221(i) | New | 28.5.7 [format.range] | Cannot format const-iterable only ranges | No | 2 | |
| 4246(i) | Tentatively NAD | 28.5.7.2 [format.range.formatter] | Redundant constraint inrange_formatter::format | Yes | | |
| 3892(i) | WP | 28.5.7.2 [format.range.formatter] | Incorrect formatting of nested ranges and tuples | Yes | 2 | |
| 3839(i) | C++23 | 28.5.7.2 [format.range.formatter] | range_formatter'sset_separator,set_brackets, andunderlying functions should benoexcept | Yes | | |
| 4107(i) | New | 28.5.7.4 [format.range.fmtmap] | Map formatter may conflict with user-defined specializations ofpair/tuple formatters | Yes | 3 | |
| 3540(i) | C++23 | 28.5.8.1 [format.arg] | §[format.arg] There should be noconst inbasic_format_arg(const T* p) | Yes | | |
| 3542(i) | C++23 | 28.5.8.1 [format.arg] | basic_format_arg mis-handlesbasic_string_view with custom traits | Yes | | |
| 3631(i) | C++23 | 28.5.8.1 [format.arg] | basic_format_arg(T&&) should useremove_cvref_t<T> throughout | Yes | 3 | |
| 3246(i) | C++20 | 28.5.8.1 [format.arg] | What are the constraints on the template parameter ofbasic_format_arg? | Yes | 0 | |
| 3371(i) | C++20 | 28.5.8.1 [format.arg] | visit_format_arg andmake_format_args are not hidden friends | Yes | 0 | |
| 3718(i) | Resolved | 28.5.8.1 [format.arg] | P2418R2 broke the overload resolution forstd::basic_format_arg | Yes | 2 | |
| 3544(i) | C++23 | 28.5.8.2 [format.arg.store] | format-arg-store::args is unintentionally not exposition-only | Yes | 3 | |
| 4106(i) | WP | 28.5.8.3 [format.args] | basic_format_args should not be default-constructible | Yes | | |
| 3473(i) | C++23 | 28.5.8.3 [format.args] | Normative encouragement in non-normative note | Yes | 0 | |
| 3810(i) | C++23 | 28.5.8.3 [format.args] | CTAD forstd::basic_format_args | Yes | 3 | |
| 4399(i) | Voting | 28.5.9 [format.tuple] | enable_nonlocking_formatter_optimization forpair andtuple needsremove_cvref_t | Yes | | |
| 2490(i) | New | 28.6 [re] | <regex> needs lots ofnoexcept | No | 3 | |
| 523(i) | Open | 28.6 [re] | regex case-insensitive character ranges are unimplementable as specified | No | 4 | |
| 524(i) | CD1 | 28.6 [re] | regex named character classes and case-insensitivity don't mix | Yes | | |
| 1142(i) | NAD Concepts | 28.6 [re] | Regular expressions library not concept enabled | Yes | | |
| 3835(i) | New | 28.6.1 [re.general] | Requirements forCharT in the regex library | No | 4 | |
| 3606(i) | New | 28.6.2 [re.req] | Missingregex_traits::locale_type requirements | No | 3 | |
| 2431(i) | New | 28.6.2 [re.req] | Missing regular expression traits requirements | No | 3 | |
| 2329(i) | C++14 | 28.6.3 [re.syn] | regex_match()/regex_search() withmatch_results should forbid temporary strings | Yes | 2 | |
| 1263(i) | NAD | 28.6.3 [re.syn] | missingswap overloads forregex | Yes | | |
| 3998(i) | New | 28.6.4 [re.const] | Constants instd::regex_constants should be allowed to be enumerators | No | 3 | |
| 2053(i) | C++14 | 28.6.4 [re.const] | Errors inregex bitmask types | Yes | | |
| 2331(i) | Open | 28.6.4.2 [re.synopt] | regex_constants::collate's effects are inaccurately summarized | Yes | 3 | |
| 2503(i) | C++17 | 28.6.4.2 [re.synopt] | multiline option should be added tosyntax_option_type | Yes | 2 | |
| 2359(i) | C++14 | 28.6.4.2 [re.synopt] | How doesregex_constants::nosubs affectbasic_regex::mark_count()? | Yes | 0 | |
| 2330(i) | C++14 | 28.6.4.2 [re.synopt] | regex("meow", regex::icase) is technically forbidden but should be permitted | Yes | 0 | |
| 3605(i) | New | 28.6.4.3 [re.matchflag] | regex_constants::match_prev_avail is underspecified | No | 3 | |
| 1450(i) | C++14 | 28.6.4.3 [re.matchflag] | Contradiction inregex_constants | Yes | 3 | |
| 2338(i) | Open | 28.6.6 [re.traits] | §[re.traits]/7 expects of locale facets something not guaranteed by [locale.facet]/4 | Yes | 3 | |
| 4186(i) | WP | 28.6.6 [re.traits] | regex_traits::transform_primary mistakenly detectstypeid of a function | Yes | | |
| 2018(i) | C++14 | 28.6.6 [re.traits] | [CD]regex_traits::isctype Returns clause is wrong | Yes | | |
| 2271(i) | C++14 | 28.6.6 [re.traits] | regex_traits::lookup_classname specification unclear | Yes | | |
| 1337(i) | C++11 | 28.6.6 [re.traits] | Swapped arguments inregex_traits::isctype | Yes | | |
| 3261(i) | New | 28.6.7 [re.regex] | regex components'noexcept annotations appear broken for POCMA or throwingBidirectionalIterator | No | 3 | |
| 3296(i) | C++20 | 28.6.7 [re.regex] | Inconsistent default argument forbasic_regex<>::assign | Yes | 0 | |
| 723(i) | C++11 | 28.6.7 [re.regex] | basic_regex should be moveable | Yes | | |
| 2029(i) | C++11 | 28.6.7 [re.regex] | Missing 'noexcept' onbasic_regex move-assignment operator | Yes | | |
| 628(i) | CD1 | 28.6.7 [re.regex] | Inconsistent definition of basic_regex constructor | Yes | | |
| 1396(i) | NAD | 28.6.7 [re.regex] | regex should support allocators | Yes | | 1451 |
| 1451(i) | Dup | 28.6.7 [re.regex] | regex should support allocators | Yes | | 1396 |
| 3341(i) | New | 28.6.7.2 [re.regex.construct] | basic_regex range constructor: Missing requirements for iterator types | No | 3 | |
| 3630(i) | New | 28.6.7.2 [re.regex.construct] | Inconsistentbasic_regex construction and assignment from iterator range | No | 4 | |
| 3603(i) | New | 28.6.7.2 [re.regex.construct] | Matching of null characters by regular expressions is underspecified | No | 3 | |
| 3604(i) | New | 28.6.7.2 [re.regex.construct] | What is the effect of an invalid value of typesyntax_option_type? | No | 3 | |
| 1014(i) | C++11 | 28.6.7.2 [re.regex.construct] | basic_regex should be created/assigned from initializer lists | Yes | | |
| 682(i) | CD1 | 28.6.7.2 [re.regex.construct] | basic_regex ctor takes InputIterator or ForwardIterator? | Yes | | |
| 2137(i) | Open | 28.6.7.3 [re.regex.assign] | Misleadingly constrained post-condition in the presence of exceptions | Yes | 3 | |
| 2001(i) | C++11 | 28.6.7.3 [re.regex.assign] | Class templatebasic_regex uses non existentstring_type | Yes | | |
| 3126(i) | New | 28.6.8 [re.submatch] | There's nostd::sub_match::compare(string_view) overload | Yes | 3 | |
| 3204(i) | C++23 | 28.6.8 [re.submatch] | sub_match::swap only swaps the base class | Yes | 3 | |
| 1180(i) | C++11 | 28.6.8.2 [re.submatch.members] | Missingstring_type member typedef in classsub_match | Yes | | |
| 2217(i) | C++17 | 28.6.8.3 [re.submatch.op] | operator==(sub_match, string) slices on embedded'\0's | Yes | 2 | |
| 1181(i) | C++11 | 28.6.8.3 [re.submatch.op] | Invalidsub_match comparison operators | Yes | | |
| 681(i) | CD1 | 28.6.8.3 [re.submatch.op] | Operator functions impossible to compare are defined in [re.submatch.op] | Yes | | |
| 2195(i) | C++23 | 28.6.9 [re.results] | Missing constructors formatch_results | Yes | 3 | |
| 2589(i) | C++17 | 28.6.9 [re.results] | match_results can't satisfy the requirements of a container | Yes | 3 | |
| 2306(i) | C++14 | 28.6.9 [re.results] | match_results::reference should bevalue_type&, notconst value_type& | Yes | 4 | |
| 645(i) | NAD Editorial | 28.6.9 [re.results] | Missing members in match_results | Yes | | |
| 684(i) | NAD Editorial | 28.6.9 [re.results] | Unclear which members of match_results should be used in comparison | Yes | | |
| 3800(i) | NAD | 28.6.9.1 [re.results.general] | No deduction guide forstd::match_results | Yes | | |
| 2191(i) | C++23 | 28.6.9.2 [re.results.const] | Incorrect specification ofmatch_results(match_results&&) | Yes | 4 | |
| 2183(i) | C++20 | 28.6.9.2 [re.results.const] | Muddled allocator requirements formatch_results constructors | Yes | 3 | |
| 2184(i) | C++20 | 28.6.9.2 [re.results.const] | Muddled allocator requirements formatch_results assignments | Yes | 3 | |
| 1209(i) | C++11 | 28.6.9.2 [re.results.const] | match_results should be moveable | Yes | | |
| 1453(i) | Resolved | 28.6.9.5 [re.results.acc] | Default constructedmatch_results behavior for certain operations | Yes | | |
| 1452(i) | NAD | 28.6.9.5 [re.results.acc] | "target sequence" is not defined | Yes | | |
| 646(i) | CD1 | 28.6.9.6 [re.results.form] | const incorrect match_result members | Yes | | |
| 2002(i) | Resolved | 28.6.9.9 [re.results.nonmember] | Class templatematch_results does not specify the semantics ofoperator== | Yes | | |
| 2273(i) | C++17 | 28.6.10.2 [re.alg.match] | regex_match ambiguity | Yes | 2 | |
| 2205(i) | C++14 | 28.6.10.2 [re.alg.match] | Problematic postconditions ofregex_match andregex_search | Yes | 0 | |
| 647(i) | NAD Editorial | 28.6.10.3 [re.alg.search] | Inconsistentregex_search params | Yes | | |
| 2216(i) | New | 28.6.10.4 [re.alg.replace] | regex_replace(basic_string) allocator handling | No | 3 | |
| 2213(i) | C++14 | 28.6.10.4 [re.alg.replace] | Return value ofstd::regex_replace | Yes | 0 | |
| 727(i) | C++11 | 28.6.10.4 [re.alg.replace] | regex_replace() doesn't acceptbasic_strings with custom traits and allocators | Yes | | |
| 726(i) | NAD | 28.6.10.4 [re.alg.replace] | Missingregex_replace() overloads | Yes | | |
| 2332(i) | C++14 | 28.6.11 [re.iter] | regex_iterator/regex_token_iterator should forbid temporary regexes | Yes | 2 | |
| 3698(i) | Resolved | 28.6.11 [re.iter] | regex_iterator andjoin_view don't work together very well | Yes | 2 | |
| 652(i) | CD1 | 28.6.11.1 [re.regiter] | regex_iterator and const correctness | Yes | | |
| 648(i) | NAD Editorial | 28.6.11.1.2 [re.regiter.cnstr] | regex_iterator c'tor needs clarification/editorial fix | Yes | | |
| 909(i) | C++11 | 28.6.11.2 [re.tokiter] | regex_token_iterator should useinitializer_list | Yes | | |
| 650(i) | CD1 | 28.6.11.2 [re.tokiter] | regex_token_iterator and const correctness | Yes | | |
| 683(i) | NAD Editorial | 28.6.11.2 [re.tokiter] | regex_token_iterator summary error | Yes | | |
| 3129(i) | C++20 | 28.6.11.2.2 [re.tokiter.cnstr] | regex_token_iterator constructor uses wrong pointer arithmetic | Yes | 0 | |
| 651(i) | CD1 | 28.6.11.2.2 [re.tokiter.cnstr] | Missing preconditions for regex_token_iterator c'tors | Yes | | |
| 649(i) | NAD Editorial | 28.6.11.2.2 [re.tokiter.cnstr] | Several typos in regex_token_iterator constructors | Yes | | |
| 2220(i) | Open | 28.6.11.2.3 [re.tokiter.comp] | Under-specification ofoperator== forregex_token_iterator | Yes | 3 | |
| 2546(i) | New | 28.6.12 [re.grammar] | Implementability of locale-sensitiveUnicodeEscapeSequence matching | No | 4 | |
| 2986(i) | New | 28.6.12 [re.grammar] | Handling of multi-character collating elements by theregex FSM is underspecified | No | 4 | |
| 2987(i) | New | 28.6.12 [re.grammar] | Relationship betweentraits_inst.lookup_collatename and theregex FSM is underspecified with regards toClassAtomCollatingElement | No | 3 | |
| 2584(i) | C++17 | 28.6.12 [re.grammar] | <regex> ECMAScriptIdentityEscape is ambiguous | Yes | 2 | |
| 716(i) | C++11 | 28.6.12 [re.grammar] | Production in [re.grammar] not actually modified | Yes | | |
| 2343(i) | Resolved | 28.6.12 [re.grammar] | Is the value of the ECMA-262 RegExp object's multiline property really false? | Yes | 2 | |
| Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates |
|---|
| 860(i) | C++11 | 29 [numerics] | Floating-Point State | Yes | | |
| 1140(i) | NAD Concepts | 29 [numerics] | Numerics library not concept enabled | Yes | | |
| 3133(i) | C++20 | 29.2 [numeric.requirements] | Modernizing numeric type requirements | Yes | 0 | |
| 2699(i) | C++17 | 29.2 [numeric.requirements] | Missing restriction in [numeric.requirements] | Yes | 3 | |
| 3905(i) | WP | 29.3.1 [cfenv.syn] | Type ofstd::fexcept_t | Yes | | |
| 4161(i) | New | 29.4 [complex.numbers] | Some free functions don't automatically work for program-definedstd::complex<NonFloatingPoint> | No | 3 | |
| 387(i) | CD1 | 29.4 [complex.numbers] | std::complex over-encapsulated | Yes | | |
| 2693(i) | Resolved | 29.4 [complex.numbers] | constexpr for variousstd::complex arithmetic and value operators | Yes | 3 | |
| 1154(i) | NAD | 29.4 [complex.numbers] | complex should accept integral types | Yes | | |
| 1217(i) | NAD | 29.4 [complex.numbers] | Quaternion support | Yes | | |
| 388(i) | NAD | 29.4 [complex.numbers] | Use ofcomplex as a key in associative containers | Yes | | |
| 79(i) | TC1 | 29.4.2 [complex.syn] | Inconsistent declaration of polar() | Yes | | |
| 80(i) | TC1 | 29.4.2 [complex.syn] | Global Operators of complex declared twice | Yes | | |
| 3933(i) | New | 29.4.3 [complex] | P1467R9 accidentally changed the signatures of certain constructors ofstd::complex | Yes | 4 | |
| 3934(i) | New | 29.4.3 [complex] | std::complex<T>::operator=(const T&) has no specification | Yes | 3 | |
| 3935(i) | WP | 29.4.3 [complex] | template<class X> constexpr complex& operator=(const complex<X>&) has no specification | Yes | | |
| 2714(i) | New | 29.4.6 [complex.ops] | complex stream extraction underspecified | Yes | 3 | |
| 629(i) | CD1 | 29.4.6 [complex.ops] | complex<T> insertion and locale dependence | Yes | | |
| 146(i) | TC1 | 29.4.6 [complex.ops] | complex<T> Inserter and Extractor need sentries | Yes | | |
| 177(i) | NAD | 29.4.6 [complex.ops] | Complex operators cannot be explicitly instantiated | Yes | | |
| 2870(i) | C++20 | 29.4.7 [complex.value.ops] | Default value of parametertheta ofpolar should be dependent | Yes | | |
| 2459(i) | C++17 | 29.4.7 [complex.value.ops] | std::polar should require a non-negative rho | Yes | 0 | |
| 1435(i) | C++11 | 29.4.7 [complex.value.ops] | Unclear returns specifications for C99 complex number functions | Yes | | |
| 595(i) | CD1 | 29.4.7 [complex.value.ops] | TR1/C++0x:fabs(complex<T>) redundant / wrongly specified | Yes | | |
| 781(i) | CD1 | 29.4.7 [complex.value.ops] | std::complex should add missing C99 functions | Yes | | |
| 2597(i) | C++20 | 29.4.8 [complex.transcendentals] | std::log misspecified for complex numbers | Yes | 3 | |
| 440(i) | NAD | 29.4.8 [complex.transcendentals] | Should std::complex use unqualified transcendentals? | Yes | | |
| 2846(i) | New | 29.4.10 [cmplx.over] | Undefined phrase "effectively cast" | Yes | 3 | |
| 4191(i) | WP | 29.4.10 [cmplx.over] | P1467 changed the return type ofpow(complex<float>, int) | Yes | | |
| 1137(i) | C++11 | 29.4.10 [cmplx.over] | Return type ofconj andproj | Yes | | |
| 1522(i) | C++11 | 29.4.10 [cmplx.over] | conj specification is now nonsense | Yes | | |
| 844(i) | CD1 | 29.4.10 [cmplx.over] | complex pow return type is ambiguous | Yes | | |
| 507(i) | CD1 | 29.5 [rand] | Missing requirement for variate_generator::operator() | Yes | | |
| 699(i) | CD1 | 29.5 [rand] | N2111 changes min/max | Yes | | |
| 506(i) | NAD | 29.5 [rand] | Requirements of Distribution parameter for variate_generator | Yes | | |
| 547(i) | NAD | 29.5 [rand] | division should be floating-point, not integer | Yes | | |
| 572(i) | NAD | 29.5 [rand] | Oops, we gave 507 WP status | Yes | | |
| 1056(i) | NAD | 29.5 [rand] | Must all Engines and Distributions be Streamable? | Yes | | |
| 1057(i) | NAD Concepts | 29.5 [rand] | RandomNumberEngineAdaptor | Yes | | |
| 656(i) | NAD Editorial | 29.5.2 [rand.synopsis] | Typo in subtract_with_carry_engine declaration | Yes | | |
| 515(i) | NAD | 29.5.2 [rand.synopsis] | Random number engine traits | Yes | | |
| 505(i) | CD1 | 29.5.3 [rand.req] | Result_type in random distribution requirements | Yes | | |
| 504(i) | NAD Editorial | 29.5.3 [rand.req] | Integer types in pseudo-random number engine requirements | Yes | | |
| 517(i) | NAD | 29.5.3 [rand.req] | Should include name in external representation | Yes | | |
| 4109(i) | New | 29.5.3.1 [rand.req.genl] | Instantiating templates in §[rand] withint8_t/uint8_t is undefined behavior | Yes | 3 | |
| 2326(i) | NAD | 29.5.3.1 [rand.req.genl] | uniform_int_distribution<unsigned char> should be permitted | Yes | 2 | |
| 4289(i) | LEWG | 29.5.3.2 [rand.req.seedseq] | Seed sequence is overspecified | Yes | 3 | |
| 2181(i) | C++17 | 29.5.3.2 [rand.req.seedseq] | Exceptions fromseed sequence operations | Yes | 3 | |
| 2124(i) | NAD | 29.5.3.2 [rand.req.seedseq] | Seed sequence over-specified | Yes | | |
| 3150(i) | C++20 | 29.5.3.3 [rand.req.urng] | UniformRandomBitGenerator should validatemin andmax | Yes | 3 | |
| 2154(i) | Resolved | 29.5.3.3 [rand.req.urng] | What exactly does compile-time complexity imply? | Yes | 4 | |
| 2327(i) | NAD | 29.5.3.3 [rand.req.urng] | Non-power-of-two URNGs should be forbidden | Yes | | |
| 654(i) | CD1 | 29.5.3.4 [rand.req.eng] | Missing IO roundtrip for random number engines | Yes | | |
| 678(i) | CD1 | 29.5.3.4 [rand.req.eng] | Changes for [rand.req.eng] | Yes | | |
| 729(i) | NAD | 29.5.3.4 [rand.req.eng] | Problem in [rand.req.eng]/3 | Yes | | |
| 730(i) | NAD | 29.5.3.5 [rand.req.adapt] | Comment on [rand.req.adapt]/3 e) | Yes | | |
| 1235(i) | NAD | 29.5.3.6 [rand.req.dist] | Issue with C++0x random number proposal | Yes | | |
| 733(i) | NAD | 29.5.3.6 [rand.req.dist] | Comment on [rand.req.dist]/9 | Yes | | |
| 3519(i) | C++23 | 29.5.4 [rand.eng] | Incomplete synopses for<random> classes | Yes | 3 | |
| 1436(i) | C++11 | 29.5.4 [rand.eng] | Random number engine constructor concerns | Yes | | |
| 512(i) | NAD Editorial | 29.5.4 [rand.eng] | Seedingsubtract_with_carry_01 from a single unsigned long | Yes | | |
| 513(i) | NAD Editorial | 29.5.4 [rand.eng] | Size of state for subtract_with_carry_01 | Yes | | |
| 516(i) | NAD Editorial | 29.5.4 [rand.eng] | Seeding subtract_with_carry_01 using a generator | Yes | | |
| 2351(i) | NAD | 29.5.4 [rand.eng] | Does.seed() completely reset state of engine? | Yes | 2 | |
| 1437(i) | C++11 | 29.5.4.3 [rand.eng.mers] | Mersenne twister meaningless for word sizes less than two | Yes | | |
| 728(i) | CD1 | 29.5.4.3 [rand.eng.mers] | Problem in [rand.eng.mers]/6 | Yes | | |
| 799(i) | NAD | 29.5.4.3 [rand.eng.mers] | Mersenne twister equality overspecified | Yes | | |
| 3809(i) | WP | 29.5.4.4 [rand.eng.sub] | Isstd::subtract_with_carry_engine<uint16_t> supposed to work? | Yes | 3 | |
| 4014(i) | WP | 29.5.4.4 [rand.eng.sub] | LWG 3809 changes behavior of some existingstd::subtract_with_carry_engine code | Yes | 2 | |
| 514(i) | NAD Editorial | 29.5.4.4 [rand.eng.sub] | Size of state for subtract_with_carry | Yes | | |
| 4212(i) | New | 29.5.4.5 [rand.eng.philox] | Make the round states in [rand.eng.philox] explicit | Yes | 3 | |
| 4224(i) | WP | 29.5.4.5 [rand.eng.philox] | Philox engines should be freestanding | Yes | | |
| 4134(i) | WP | 29.5.4.5 [rand.eng.philox] | Issue with Philox algorithm specification | Yes | 1 | |
| 4153(i) | WP | 29.5.4.5 [rand.eng.philox] | Fix extra "-1" forphilox_engine::max() | Yes | | |
| 3561(i) | C++23 | 29.5.5.2 [rand.adapt.disc] | Issue with internal counter indiscard_block_engine | Yes | | |
| 1438(i) | C++11 | 29.5.5.2 [rand.adapt.disc] | No definition forbase() | Yes | | |
| 738(i) | NAD Editorial | 29.5.5.2 [rand.adapt.disc] | Editorial issue in [rand.adapt.disc]/3 | Yes | | |
| 609(i) | CD1 | 29.5.5.3 [rand.adapt.ibits] | missing static const | Yes | | |
| 508(i) | CD1 | 29.5.6 [rand.predef] | Bad parameters for ranlux64_base_01 | Yes | | |
| 796(i) | NAD | 29.5.6 [rand.predef] | ranlux48_base returns wrong value | Yes | | |
| 797(i) | NAD | 29.5.6 [rand.predef] | ranlux48 returns wrong value | Yes | | |
| 802(i) | NAD | 29.5.6 [rand.predef] | knuth_b returns wrong value | Yes | | |
| 548(i) | NAD | 29.5.7 [rand.device] | May random_device block? | Yes | | |
| 1068(i) | NAD | 29.5.7 [rand.device] | classrandom_device should be movable | Yes | | |
| 3422(i) | C++23 | 29.5.8.1 [rand.util.seedseq] | Issues ofseed_seq's constructors | Yes | 3 | |
| 2440(i) | C++17 | 29.5.8.1 [rand.util.seedseq] | seed_seq::size() should benoexcept | Yes | 0 | |
| 2180(i) | C++14 | 29.5.8.1 [rand.util.seedseq] | Exceptions fromstd::seed_seq operations | Yes | | |
| 607(i) | CD1 | 29.5.8.1 [rand.util.seedseq] | Concern about short seed vectors | Yes | | |
| 608(i) | CD1 | 29.5.8.1 [rand.util.seedseq] | Unclear seed_seq construction details | Yes | | |
| 677(i) | CD1 | 29.5.8.1 [rand.util.seedseq] | Weaknesses in seed_seq::randomize [rand.util.seedseq] | Yes | | |
| 712(i) | CD1 | 29.5.8.1 [rand.util.seedseq] | seed_seq::size no longer useful | Yes | | |
| 782(i) | CD1 | 29.5.8.1 [rand.util.seedseq] | Extendedseed_seq constructor is useless | Yes | | |
| 800(i) | Resolved | 29.5.8.1 [rand.util.seedseq] | Issues in 26.4.7.1 [rand.util.seedseq](6) | Yes | | |
| 803(i) | Resolved | 29.5.8.1 [rand.util.seedseq] | Simplification ofseed_seq::seq_seq | Yes | | |
| 2352(i) | NAD | 29.5.8.1 [rand.util.seedseq] | Is a default-constructedstd::seed_seq intended to produce a predictable.generate()? | Yes | 2 | |
| 731(i) | NAD | 29.5.8.1 [rand.util.seedseq] | proposal for a customizableseed_seq | Yes | | |
| 1069(i) | NAD | 29.5.8.1 [rand.util.seedseq] | classseed_seq should support efficient move operations | Yes | | |
| 1313(i) | NAD | 29.5.8.1 [rand.util.seedseq] | Seed sequence's param function not useful for pure output iterator | Yes | | |
| 655(i) | CD1 | 29.5.8.2 [rand.util.canonical] | Signature of generate_canonical not useful | Yes | | |
| 739(i) | NAD | 29.5.8.2 [rand.util.canonical] | Defect in [rand.util.canonical]/3 | Yes | | |
| 549(i) | NAD Editorial | 29.5.9 [rand.dist] | Undefined variable in binomial_distribution | Yes | | |
| 511(i) | NAD | 29.5.9 [rand.dist] | Input_type for binomial_distribution | Yes | | |
| 509(i) | NAD | 29.5.9.2 [rand.dist.uni] | Uniform_int template parameters | Yes | | |
| 773(i) | NAD | 29.5.9.2 [rand.dist.uni] | issues with random | Yes | | |
| 2168(i) | C++17 | 29.5.9.2.2 [rand.dist.uni.real] | Inconsistent specification ofuniform_real_distribution constructor | Yes | 3 | |
| 510(i) | NAD | 29.5.9.3 [rand.dist.bern] | Input_type for bernoulli_distribution | Yes | | |
| 735(i) | NAD | 29.5.9.3.2 [rand.dist.bern.bin] | Unfortunate naming | Yes | | |
| 3402(i) | New | 29.5.9.3.4 [rand.dist.bern.negbin] | Wording fornegative_binomial_distribution is unclear as a consequence of LWG 2406 resolution | No | 3 | |
| 2406(i) | C++17 | 29.5.9.3.4 [rand.dist.bern.negbin] | negative_binomial_distribution should rejectp == 1 | Yes | 3 | |
| 2524(i) | Resolved | 29.5.9.4.2 [rand.dist.pois.exp] | generate_canonical can occasionally return 1.0 | Yes | 2 | |
| 734(i) | CD1 | 29.5.9.5.3 [rand.dist.norm.chisq] | Unnecessary restriction in [rand.dist.norm.chisq] | Yes | | |
| 793(i) | Resolved | 29.5.9.6.1 [rand.dist.samp.discrete] | discrete_distribution missing constructor | Yes | | |
| 874(i) | Resolved | 29.5.9.6.1 [rand.dist.samp.discrete] | Missinginitializer_list constructor fordiscrete_distribution | Yes | | |
| 736(i) | NAD | 29.5.9.6.1 [rand.dist.samp.discrete] | Comment on [rand.dist.samp.discrete] | Yes | | |
| 4052(i) | New | 29.5.9.6.2 [rand.dist.samp.pconst] | Bogus requirements forpiecewise_linear_distribution | Yes | 4 | |
| 1439(i) | C++11 | 29.5.9.6.2 [rand.dist.samp.pconst] | Return fromdensities() functions? | Yes | | |
| 792(i) | CD1 | 29.5.9.6.2 [rand.dist.samp.pconst] | piecewise_constant_distribution is undefined for a range with just one endpoint | Yes | | |
| 794(i) | Resolved | 29.5.9.6.2 [rand.dist.samp.pconst] | piecewise_constant_distribution missing constructor | Yes | | |
| 875(i) | Resolved | 29.5.9.6.2 [rand.dist.samp.pconst] | Missinginitializer_list constructor forpiecewise_constant_distribution | Yes | | |
| 737(i) | NAD | 29.5.9.6.2 [rand.dist.samp.pconst] | Comment on [rand.dist.samp.pconst] | Yes | | |
| 791(i) | NAD | 29.5.9.6.2 [rand.dist.samp.pconst] | piecewise_constant_distribution::densities has wrong name | Yes | | |
| 1440(i) | C++11 | 29.5.9.6.3 [rand.dist.samp.plinear] | Incorrect specification forpiecewise_linear_distribution | Yes | | |
| 2058(i) | C++14 | 29.6 [numarray] | valarray andbegin/end | Yes | | |
| 621(i) | CD1 | 29.6 [numarray] | non-const copy assignment operators of helper arrays | Yes | | |
| 93(i) | NAD | 29.6 [numarray] | Incomplete Valarray Subset Definitions | Yes | | |
| 125(i) | TC1 | 29.6.2 [template.valarray] | valarray<T>::operator!() return type is inconsistent | Yes | | |
| 107(i) | NAD | 29.6.2 [template.valarray] | Valarray constructor is strange | Yes | | |
| 630(i) | C++11 | 29.6.2.2 [valarray.cons] | arrays ofvalarray | Yes | | |
| 1208(i) | C++11 | 29.6.2.2 [valarray.cons] | valarray initializer_list constructor has incorrect effects | Yes | | |
| 253(i) | CD1 | 29.6.2.2 [valarray.cons] | valarray helper functions are almost entirely useless | Yes | | |
| 620(i) | CD1 | 29.6.2.2 [valarray.cons] | valid uses of empty valarrays | Yes | | |
| 867(i) | NAD Editorial | 29.6.2.2 [valarray.cons] | Valarray and value-initialization | Yes | | |
| 2071(i) | C++14 | 29.6.2.3 [valarray.assign] | std::valarray move-assignment | Yes | | |
| 624(i) | CD1 | 29.6.2.3 [valarray.assign] | valarray assignment and arrays of unequal length | Yes | | |
| 389(i) | CD1 | 29.6.2.4 [valarray.access] | Const overload of valarray::operator[] returns by value | Yes | | 77 |
| 636(i) | NAD Editorial | 29.6.2.4 [valarray.access] | 26.5.2.3 valarray::operator[] | Yes | | |
| 717(i) | NAD Editorial | 29.6.2.4 [valarray.access] | Incompletevalarray::operator[] specification in [valarray.access] | Yes | | |
| 77(i) | Dup | 29.6.2.4 [valarray.access] | Valarray operator[] const returning value | Yes | | 389 |
| 430(i) | C++11 | 29.6.2.5 [valarray.sub] | valarray subset operations | Yes | | |
| 188(i) | NAD | 29.6.2.7 [valarray.cassign] | valarray helpers missing augmented assignment operators | Yes | | |
| 1243(i) | NAD | 29.6.2.7 [valarray.cassign] | Missingoperator+= (initializer_list<T>) forvalarray | Yes | | |
| 618(i) | CD1 | 29.6.2.8 [valarray.members] | valarray::cshift() effects on empty array | Yes | | |
| 3074(i) | C++20 | 29.6.3 [valarray.nonmembers] | Non-member functions forvalarray should only deduce from thevalarray | Yes | 0 | |
| 3964(i) | New | 29.6.3.3 [valarray.transcend] | std::atan2 andstd::pow overloads that take twostd::valarray parameters should require the arguments to have the same length | Yes | 4 | |
| 543(i) | CD1 | 29.6.4 [class.slice] | valarray slice default constructor | Yes | | |
| 2423(i) | New | 29.6.5 [template.slice.array] | Missing specificationslice_array,gslice_array,mask_array,indirect_array copy constructor | Yes | 4 | |
| 106(i) | TC1 | 29.6.5 [template.slice.array] | Numeric library private members are implementation defined | Yes | | |
| 81(i) | NAD | 29.6.5 [template.slice.array] | Wrong declaration of slice operations | Yes | | |
| 123(i) | CD1 | 29.6.5.4 [slice.arr.fill] | Should valarray helper arrays fill functions be const? | Yes | | |
| 2115(i) | Open | 29.6.8 [template.mask.array] | Undefined behaviour forvalarray assignments withmask_array index? | No | 4 | |
| 3693(i) | New | 29.7 [c.math] | §[c.math] Can any offloat/double/long double overloads be fused into template overloads? | No | 2 | |
| 2192(i) | C++17 | 29.7 [c.math] | Validity and return type ofstd::abs(0u) is unclear | Yes | 2 | |
| 2735(i) | C++17 | 29.7 [c.math] | std::abs(short),std::abs(signed char) and others should returnint instead ofdouble in order to be compatible with C++98 and C | Yes | 3 | |
| 2086(i) | C++14 | 29.7 [c.math] | Overly generic type support for math functions | Yes | | |
| 1134(i) | C++11 | 29.7 [c.math] | Redundant specification of<stdint.h>,<fenv.h>,<tgmath.h>, and maybe<complex.h> | Yes | | |
| 1441(i) | C++11 | 29.7 [c.math] | Floating-point test functions are incorrectly specified | Yes | | |
| 295(i) | CD1 | 29.7 [c.math] | Is abs defined in <cmath>? | Yes | | |
| 395(i) | CD1 | 29.7 [c.math] | inconsistencies in the definitions of rand() and random_shuffle() | Yes | | |
| 550(i) | CD1 | 29.7 [c.math] | What should the return type ofpow(float,int) be? | Yes | | |
| 722(i) | CD1 | 29.7 [c.math] | Missing [c.math] functionsnanf andnanl | Yes | | |
| 2294(i) | Resolved | 29.7 [c.math] | <cstdlib> should declareabs(double) | Yes | 2 | |
| 1327(i) | Resolved | 29.7 [c.math] | templates defined in<cmath> replacing C macros with the same name | Yes | | |
| 637(i) | NAD Editorial | 29.7 [c.math] | §[c.math]/10 inconsistent return values | Yes | | |
| 357(i) | NAD Editorial | 29.7 [c.math] | <cmath> float functions cannot return HUGE_VAL | Yes | | |
| 690(i) | NAD Editorial | 29.7 [c.math] | abs(long long) should return long long | Yes | | |
| 213(i) | NAD | 29.7 [c.math] | Math function overloads ambiguous | Yes | | |
| 289(i) | NAD | 29.7 [c.math] | <cmath> requirements missing C float and long double versions | Yes | | |
| 323(i) | NAD | 29.7 [c.math] | abs() overloads in different headers | Yes | | |
| 583(i) | NAD | 29.7 [c.math] | div() for unsigned integral types | Yes | | |
| 584(i) | NAD | 29.7 [c.math] | missing intpow(int,int) functionality | Yes | | |
| 2079(i) | NAD | 29.7 [c.math] | Requiredpow() overloads | Yes | 3 | |
| 2474(i) | NAD | 29.7 [c.math] | <cmath> functions unfriendly tointegral_constant arguments | Yes | 4 | |
| 2847(i) | New | 29.7.1 [cmath.syn] | sin(float) should callsinf(float) | No | 3 | |
| 2923(i) | New | 29.7.1 [cmath.syn] | noexcept is inconsistently applied across headers which import components of the C standard library | No | 4 | |
| 3790(i) | C++23 | 29.7.1 [cmath.syn] | P1467 accidentally changednexttoward's signature | Yes | 1 | |
| 3051(i) | C++20 | 29.7.1 [cmath.syn] | Floating point classifications were inadvertently changed in P0175 | Yes | 0 | |
| 3223(i) | Resolved | 29.7.1 [cmath.syn] | lerp should not add the "sufficient additional overloads" | Yes | 2 | |
| 3234(i) | Resolved | 29.7.1 [cmath.syn] | Sufficient Additional Special Math Overloads | Yes | 3 | |
| 3093(i) | New | 29.7.2 [c.math.abs] | LWG 2294/2192 missed astd::abs overload | No | 3 | |
| 3172(i) | New | 29.7.3 [c.math.hypot3] | 3-argstd::hypot is underspecified compared to the 2-arg overload | Yes | 3 | |
| 3201(i) | C++20 | 29.7.4 [c.math.lerp] | lerp should be marked asnoexcept | Yes | 2 | |
| 3066(i) | New | 29.7.6 [sf.cmath] | "report a domain error" in [sf.cmath]/1 is underspecified | No | 3 | |
| 4136(i) | Voting | 29.9.3 [linalg.general] | Specify behavior of [linalg] Hermitian algorithms on diagonal with nonzero imaginary part | Yes | | |
| 4185(i) | New | 29.9.7 [linalg.helpers] | Ill-formed, no diagnostic required on runtime behavior | No | 3 | |
| 4302(i) | Immediate | 29.9.13.8 [linalg.algs.blas1.ssq] | Problematicvector_sum_of_squares wording | Yes | 1 | |
| 4315(i) | Voting | 29.9.13.9 [linalg.algs.blas1.nrm2] | Insufficient specification ofvector_two_norm andmatrix_frob_norm | Yes | | |
| 4137(i) | Voting | 29.9.14 [linalg.algs.blas2] | FixMandates,Preconditions, andComplexity elements of [linalg] algorithms | Yes | | |
| 4420(i) | Immediate | 29.10 [simd] | §[simd] conversions (constructor, load, stores, gather, and scatter) areincorrectly constrained for<stdfloat> types | Yes | 1 | |
| 4409(i) | New | 29.10 [simd] | Constant expressionranges::size(r)Constraints andMandates in [simd] | Yes | 3 | |
| 4414(i) | New | 29.10.2.2 [simd.expos.abi] | §[simd.expos.abi]deduce-abi-t is underspecified and incorrectly referencedfromrebind andresize | Yes | | |
| 4412(i) | Voting | 29.10.3 [simd.syn] | Fix declaration ofzero_element anduninit_element | Yes | | |
| 4231(i) | WP | 29.10.3 [simd.syn] | datapar::chunk<N> should usesimd-size-type instead ofsize_t | Yes | | |
| 4413(i) | Voting | 29.10.4 [simd.traits] | Unused/left-oversimd::alignment specialization forbasic_mask | Yes | | |
| 4232(i) | WP | 29.10.4 [simd.traits] | datapar::resize does not resize | Yes | | |
| 4403(i) | Voting | 29.10.7.2 [simd.ctor] | simd::basic_vec CTAD misses difference type casting | Yes | | |
| 4407(i) | Voting | 29.10.7.2 [simd.ctor] | constexpr-wrapper-like needsremove_cvref_t insimd::basic_vecconstructor | Yes | | |
| 4391(i) | Tentatively NAD | 29.10.7.2 [simd.ctor] | Ambiguities ofsimd::basic_vec constructor | Yes | | |
| 4436(i) | New | 29.10.7.2 [simd.ctor] | simd broadcast is overconstrained —std::cw<0.f> is not convertible tosimd::vec<float16_t> | Yes | | |
| 4390(i) | LEWG | 29.10.7.2 [simd.ctor] | simd::basic_vec(U&&) default template parameter | Yes | 4 | |
| 4408(i) | LEWG | 29.10.7.3 [simd.subscr] | Hardeningsimd::vec::operator[] | Yes | 3 | |
| 4230(i) | Immediate | 29.10.8.4 [simd.complex.access] | simd<complex>::real/imag is overconstrained | Yes | 2 | |
| 4280(i) | Voting | 29.10.8.7 [simd.loadstore] | simd::partial_load uses undefined identifierT | Yes | | |
| 4392(i) | New | 29.10.8.7 [simd.loadstore] | simd::unchecked_load misses difference type casting | Yes | 3 | |
| 4394(i) | New | 29.10.8.7 [simd.loadstore] | simd::unchecked_load(I first, S last) constructspan maybe ill-formed | Yes | 3 | |
| 4393(i) | New | 29.10.8.11 [simd.permute.memory] | simd::unchecked_scatter_to is underconstrained | Yes | 2 | |
| 4386(i) | New | 29.10.8.13 [simd.alg] | std::simd::select(bool c, const T& a, const U& b) is underconstrained | Yes | 3 | |
| 4375(i) | Voting | 29.10.8.15 [simd.bit] | std::simd::bit_ceil should not benoexcept | Yes | | |
| 4402(i) | New | 29.10.9.1 [simd.mask.overview] | List-initialization of iterators in [simd.mask.overview] | Yes | 3 | |
| 4382(i) | Voting | 29.10.9.2 [simd.mask.ctor] | Thesimd::basic_mask(bool) overload needs to be more constrained | Yes | | |
| 4376(i) | Immediate | 29.10.9.4 [simd.mask.unary] | ABI tag in return type of [simd.mask.unary] is overconstrained | Yes | 1 | |
| 4238(i) | New | 29.10.9.4 [simd.mask.unary] | simd_mask<complex<double>>::operator+/-/~ return a disabledsimd specialization | Yes | 1 | |
| Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates |
|---|
| 786(i) | Resolved | 30 [time] | Thread library timed waits, UTC and monotonic clocks | Yes | | |
| 1032(i) | NAD Concepts | 30 [time] | Tome utility templates need to be concept-constrained | Yes | | |
| 2592(i) | New | 30.2 [time.syn] | Require thatchrono::duration_casts from smaller durations to larger durations do not overflow | Yes | 4 | |
| 2278(i) | C++14 | 30.2 [time.syn] | User-defined literals for Standard Library types | Yes | | |
| 954(i) | C++11 | 30.3 [time.clock.req] | Various threading bugs #4 | Yes | | |
| 956(i) | C++11 | 30.3 [time.clock.req] | Various threading bugs #6 | Yes | | |
| 953(i) | Resolved | 30.3 [time.clock.req] | Various threading bugs #3 | Yes | | |
| 955(i) | NAD | 30.3 [time.clock.req] | Various threading bugs #5 | Yes | | |
| 951(i) | C++11 | 30.4.1 [time.traits.is.fp] | Various threading bugs #1 | Yes | | |
| 3123(i) | C++23 | 30.5 [time.duration] | duration constructor from representation shouldn't be effectively non-throwing | Yes | 3 | |
| 934(i) | C++11 | 30.5 [time.duration] | duration is missingoperator% | Yes | | |
| 1171(i) | C++11 | 30.5 [time.duration] | duration types should be literal | Yes | | |
| 1177(i) | C++11 | 30.5 [time.duration] | Improve "diagnostic required" wording | Yes | | |
| 2912(i) | Resolved | 30.5 [time.duration] | Add a deduction guide for class templateduration | Yes | | |
| 3090(i) | Voting | 30.5.2 [time.duration.cons] | What is §[time.duration.cons]p4's "no overflow is induced in the conversion" intended to mean? | Yes | 3 | |
| 3050(i) | C++20 | 30.5.2 [time.duration.cons] | Conversion specification problem inchrono::duration constructor | Yes | 3 | |
| 2094(i) | C++14 | 30.5.2 [time.duration.cons] | duration conversion overflow shouldn't participate in overload resolution | Yes | | |
| 974(i) | C++11 | 30.5.2 [time.duration.cons] | duration<double> should not implicitly convert toduration<int> | Yes | | |
| 3104(i) | C++20 | 30.5.6 [time.duration.nonmember] | Fixingduration division | Yes | 0 | |
| 1271(i) | C++11 | 30.5.6 [time.duration.nonmember] | CR undefined in duration operators | Yes | | |
| 2004(i) | C++11 | 30.5.6 [time.duration.nonmember] | duration::operator* has template parameters in funny order | Yes | | |
| 2020(i) | C++11 | 30.5.6 [time.duration.nonmember] | Time utility arithmeticconstexpr functions have invalid effects | Yes | | |
| 882(i) | CD1 | 30.5.6 [time.duration.nonmember] | duration non-member arithmetic requirements | Yes | | |
| 947(i) | Resolved | 30.5.6 [time.duration.nonmember] | duration arithmetic: contradictory requirements | Yes | | |
| 3503(i) | New | 30.5.8 [time.duration.cast] | chrono::ceil has surprising requirement | Yes | 3 | |
| 952(i) | NAD Editorial | 30.5.8 [time.duration.cast] | Various threading bugs #2 | Yes | | |
| 946(i) | NAD | 30.5.8 [time.duration.cast] | duration_cast improperly specified | Yes | | |
| 2383(i) | Open | 30.5.9 [time.duration.literals] | Overflow cannot be ill-formed for chrono::duration integer literals | No | 3 | |
| 3741(i) | NAD | 30.5.10 [time.duration.alg] | std::chrono::abs(duration) is ill-formed with non-reduced periods | Yes | | |
| 3536(i) | C++23 | 30.5.11 [time.duration.io] | Shouldchrono::from_stream() assign zero toduration for failure? | Yes | | |
| 3094(i) | C++20 | 30.5.11 [time.duration.io] | §[time.duration.io]p4 makes surprising claims about encoding | Yes | 0 | |
| 3314(i) | C++20 | 30.5.11 [time.duration.io] | Is stream insertion behavior locale dependent whenPeriod::type ismicro? | Yes | 2 | |
| 3317(i) | C++20 | 30.5.11 [time.duration.io] | Incorrectoperator<< for floating-point durations | Yes | 0 | |
| 3125(i) | Resolved | 30.5.11 [time.duration.io] | duration streaming precondition should be a SFINAE condition | Yes | 2 | |
| 2054(i) | Resolved | 30.6 [time.point] | time_point constructors need to beconstexpr | Yes | | |
| 2739(i) | C++17 | 30.6.6 [time.point.nonmember] | Issue withtime_point non-member subtraction with an unsigned duration | Yes | 0 | |
| 2057(i) | Resolved | 30.6.6 [time.point.nonmember] | time_point + duration semantics should be madeconstexpr conforming | Yes | | |
| 935(i) | NAD | 30.7 [time.clock] | clock error handling needs to be specified | Yes | | |
| 957(i) | C++11 | 30.7.2 [time.clock.system] | Various threading bugs #7 | Yes | | |
| 945(i) | NAD Editorial | 30.7.2 [time.clock.system] | system_clock::rep not specified | Yes | | |
| 3318(i) | C++20 | 30.7.2.1 [time.clock.system.overview] | Clarify whether clocks can represent time before their epoch | Yes | 0 | |
| 4288(i) | New | 30.7.2.2 [time.clock.system.members] | TheConstraints: element in [time.clock.system.members] is probably wrong | Yes | 3 | |
| 3316(i) | C++20 | 30.7.3.1 [time.clock.utc.overview] | Correctly define epoch forutc_clock /utc_timepoint | Yes | 0 | |
| 3145(i) | C++20 | 30.7.6 [time.clock.file] | file_clock breaks ABI for C++17 implementations | Yes | 1 | |
| 1413(i) | NAD | 30.7.8 [time.clock.hires] | Specify whetherhigh_resolution_clock is a distinct type or a typedef | Yes | | |
| 4257(i) | Voting | 30.7.9 [time.clock.local] | Stream insertion forchrono::local_time should be constrained | Yes | | |
| 3260(i) | C++20 | 30.8 [time.cal] | year_month* arithmetic rejects durations convertible to years | Yes | 2 | |
| 3209(i) | C++20 | 30.8.5.2 [time.cal.year.members] | Expression inyear::ok() returns clause is ill-formed | Yes | 0 | |
| 3273(i) | C++20 | 30.8.7.2 [time.cal.wdidx.members] | Specifyweekday_indexed to range of[0, 7] | Yes | 0 | |
| 3221(i) | C++20 | 30.8.13.3 [time.cal.ym.nonmembers] | Result ofyear_month arithmetic withmonths is ambiguous | Yes | 0 | |
| 3206(i) | C++20 | 30.8.14.2 [time.cal.ymd.members] | year_month_day conversion tosys_days uses not-existing member function | Yes | 0 | |
| 3231(i) | C++20 | 30.8.15.2 [time.cal.ymdlast.members] | year_month_day_last::day specification does not cover!ok() values | Yes | 0 | |
| 3091(i) | Resolved | 30.9 [time.hms] | subsecond-precisiontime_of_day and durations thatseconds cannot convert to | Yes | 2 | |
| 4274(i) | Voting | 30.9.2 [time.hms.members] | Thechrono::hh_mm_ss constructor is ill-formed for unsigned durations | Yes | | |
| 3319(i) | C++20 | 30.11.1 [time.zone.general] | Properly reference specification of IANA time zone database | Yes | 0 | |
| 4193(i) | New | 30.11.2 [time.zone.db] | §[time.zone.db] the specification uses the undefined term "thread-safe" | No | 3 | |
| 4211(i) | New | 30.11.2.1 [time.zone.db.tzdb] | IANA time zone database allows links to refer to links | Yes | 2 | |
| 3678(i) | New | 30.11.5.1 [time.zone.overview] | Constructors ofstd::chrono::time_zone might be overly unspecified | Yes | 4 | |
| 3232(i) | C++20 | 30.11.7.1 [time.zone.zonedtime.overview] | Inconsistency inzoned_time deduction guides | Yes | 0 | |
| 3294(i) | C++20 | 30.11.7.1 [time.zone.zonedtime.overview] | zoned_time deduction guides misinterpretsstring/char* | Yes | 0 | |
| 4067(i) | New | 30.11.7.2 [time.zone.zonedtime.ctor] | Inconsistency and potential infinity meta-recursion instd::chrono::zoned_time's constructors | Yes | 3 | |
| 3224(i) | C++20 | 30.11.7.2 [time.zone.zonedtime.ctor] | zoned_time constructor fromTimeZonePtr does not specify initialization oftp_ | Yes | 0 | |
| 3225(i) | C++20 | 30.11.7.2 [time.zone.zonedtime.ctor] | zoned_time converting constructor shall not benoexcept | Yes | 0 | |
| 3226(i) | C++20 | 30.11.7.2 [time.zone.zonedtime.ctor] | zoned_time constructor fromstring_view should acceptzoned_time<Duration2, TimeZonePtr2> | Yes | 2 | |
| 4139(i) | New | 30.11.8 [time.zone.leap] | §[time.zone.leap] recursive constraint in<=> | No | 3 | |
| 3359(i) | C++20 | 30.11.8 [time.zone.leap] | <chrono> leap second support should allow for negative leap seconds | Yes | 3 | |
| 3383(i) | C++20 | 30.11.8.3 [time.zone.leap.nonmembers] | §[time.zone.leap.nonmembers]sys_seconds should be replaced withseconds | Yes | 1 | |
| 3831(i) | New | 30.12 [time.format] | Two-digit formatting of negativeyear is ambiguous | Yes | 3 | |
| 4022(i) | New | 30.12 [time.format] | Ambiguity in the formatting of negative years with format specifier%C | Yes | 3 | |
| 4400(i) | New | 30.12 [time.format] | enable_nonlocking_formatter_optimization for durations with custom rep | Yes | 3 | |
| 4118(i) | New | 30.12 [time.format] | How shouldduration formatters format customrep types? | Yes | 3 | |
| 3856(i) | New | 30.12 [time.format] | Unclear which conversion specifiers are valid for each chrono type | Yes | 3 | |
| 3921(i) | New | 30.12 [time.format] | Isstd::chrono::duration<std::int64_t, std::ratio<INT64_MAX - 1, INT64_MAX>>{40} required to be correctly formatted? | No | 3 | |
| 3844(i) | Open | 30.12 [time.format] | Non-numeric formats for negative durations | Yes | 3 | |
| 4124(i) | WP | 30.12 [time.format] | Cannot formatzoned_time with resolution coarser than seconds | Yes | | |
| 3842(i) | C++23 | 30.12 [time.format] | Unclear wording forprecision inchrono-format-spec | Yes | | |
| 3241(i) | C++20 | 30.12 [time.format] | chrono-spec grammar ambiguity in §[time.format] | Yes | 0 | |
| 3262(i) | C++20 | 30.12 [time.format] | Formatting of negative durations is not specified | Yes | 2 | |
| 3270(i) | C++20 | 30.12 [time.format] | Parsing and formatting%j withdurations | Yes | 2 | |
| 3272(i) | C++20 | 30.12 [time.format] | %I%p should parse/formatduration since midnight | Yes | 0 | |
| 3332(i) | C++20 | 30.12 [time.format] | Issue in §[time.format] | Yes | 0 | |
| 3565(i) | Resolved | 30.12 [time.format] | Handling of encodings in localized formatting ofchrono types is underspecified | Yes | 2 | |
| 3547(i) | Resolved | 30.12 [time.format] | Time formatters should not be locale sensitive by default | Yes | 2 | |
| 3962(i) | New | 30.13 [time.parse] | What is the "decimal precision of the input"? | Yes | 3 | |
| 3960(i) | New | 30.13 [time.parse] | How doeschrono::parse handle duplicated data? | Yes | 3 | |
| 3961(i) | New | 30.13 [time.parse] | Doeschrono::parse check format strings? | Yes | 3 | |
| 3956(i) | WP | 30.13 [time.parse] | chrono::parse usesfrom_stream as a customization point | Yes | 3 | |
| 3554(i) | C++23 | 30.13 [time.parse] | chrono::parse needsconst charT* andbasic_string_view<charT> overloads | Yes | 2 | |
| 3131(i) | C++20 | 30.13 [time.parse] | addressof all the things | Yes | 0 | |
| 3218(i) | C++20 | 30.13 [time.parse] | Modifier for%d parse flag does not match POSIX andformat specification | Yes | 0 | |
| 3230(i) | C++20 | 30.13 [time.parse] | Format specifier%y/%Y is missing locale alternative versions | Yes | 0 | |
| 3235(i) | C++20 | 30.13 [time.parse] | parse manipulator without abbreviation is not callable | Yes | 0 | |
| 3245(i) | C++20 | 30.13 [time.parse] | Unnecessary restriction on'%p' parse specifier | Yes | 0 | |
| 3252(i) | C++20 | 30.13 [time.parse] | Parse locale's aware modifiers for commands are not consistentwith POSIX spec | Yes | 2 | |
| 3269(i) | C++20 | 30.13 [time.parse] | Parse manipulators do not specify the result of the extraction from stream | Yes | 2 | |
| 3271(i) | NAD | 30.13 [time.parse] | Parsing functions should save and restore stream format state | Yes | 3 | |
| Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates |
|---|
| 423(i) | Open | 31 [input.output] | Effects of negativestreamsize in iostreams | Yes | 3 | |
| 3130(i) | C++20 | 31 [input.output] | §[input.output] needs manyaddressof | Yes | 0 | |
| 44(i) | CD1 | 31 [input.output] | Iostreams use operator== on int_type values | Yes | | |
| 273(i) | CD1 | 31 [input.output] | Missing ios_base qualification on members of a dependent class | Yes | | |
| 308(i) | CD1 | 31 [input.output] | Table 82 mentions unrelated headers | Yes | | |
| 365(i) | CD1 | 31 [input.output] | Lack of const-qualification in clause 27 | Yes | | |
| 55(i) | TC1 | 31 [input.output] | Invalid stream position is undefined | Yes | | |
| 366(i) | NAD | 31 [input.output] | Excessive const-qualification | Yes | | |
| 1141(i) | NAD Concepts | 31 [input.output] | Input/Output library not concept enabled | Yes | | |
| 623(i) | CD1 | 31.2.1 [iostream.limits.imbue] | pubimbue forbidden to callimbue | Yes | | |
| 3696(i) | New | 31.2.2 [stream.types] | "Basic integral types" should not be used | Yes | 3 | |
| 369(i) | CD1 | 31.4 [iostream.objects] | io stream objects and static ctors | Yes | | |
| 455(i) | CD1 | 31.4 [iostream.objects] | cerr::tie() and wcerr::tie() are overspecified | Yes | | |
| 574(i) | CD1 | 31.4 [iostream.objects] | DR 369 Contradicts Text | Yes | | |
| 155(i) | TC1 | 31.4 [iostream.objects] | Typo in naming the class defining the classInit | Yes | | |
| 3910(i) | New | 31.4.2 [iostream.objects.overview] | The effects of including<iostream> on initialization are not yet precisely specified | Yes | 4 | |
| 3878(i) | C++23 | 31.4.2 [iostream.objects.overview] | import std; should guarantee initialization of standard iostreams objects | Yes | | |
| 29(i) | TC1 | 31.4.3 [narrow.stream.objects] | Ios_base::init doesn't exist | Yes | | |
| 178(i) | NAD | 31.4.3 [narrow.stream.objects] | Should clog and cerr initially be tied to cout? | Yes | | |
| 2087(i) | C++14 | 31.5 [iostreams.base] | iostream_category() andnoexcept | Yes | | |
| 1257(i) | C++11 | 31.5 [iostreams.base] | Header <ios> still contains aconcept_map | Yes | | |
| 35(i) | TC1 | 31.5 [iostreams.base] | No manipulator unitbuf in synopsis | Yes | | |
| 2462(i) | C++17 | 31.5.2 [ios.base] | std::ios_base::failure is overspecified | Yes | 3 | |
| 2143(i) | C++14 | 31.5.2 [ios.base] | ios_base::xalloc should be thread-safe | Yes | | |
| 41(i) | TC1 | 31.5.2 [ios.base] | Ios_base needs clear(), exceptions() | Yes | | 157 |
| 50(i) | TC1 | 31.5.2 [ios.base] | Copy constructor and assignment operator of ios_base | Yes | | |
| 78(i) | TC1 | 31.5.2 [ios.base] | Typo: event_call_back | Yes | | |
| 331(i) | CD1 | 31.5.2.2.1 [ios.failure] | bad declaration of destructor for ios_base::failure | Yes | | |
| 363(i) | CD1 | 31.5.2.2.1 [ios.failure] | Missing exception specification in 27.4.2.1.1 | Yes | | |
| 48(i) | TC1 | 31.5.2.2.1 [ios.failure] | Use of non-existent exception constructor | Yes | | |
| 2765(i) | C++17 | 31.5.2.2.6 [ios.init] | Did LWG 1123 go too far? | Yes | 0 | |
| 1123(i) | C++11 | 31.5.2.2.6 [ios.init] | No requirement that standard streams be flushed | Yes | | |
| 418(i) | NAD | 31.5.2.2.6 [ios.init] | exceptions thrown during iostream cleanup | Yes | | |
| 189(i) | TC1 | 31.5.2.3 [fmtflags.state] | setprecision() not specified correctly | Yes | | |
| 287(i) | NAD | 31.5.2.3 [fmtflags.state] | conflicting ios_base fmtflags | Yes | | |
| 47(i) | TC1 | 31.5.2.4 [ios.base.locales] | Imbue() and getloc() Returns clauses swapped | Yes | | |
| 156(i) | TC1 | 31.5.2.4 [ios.base.locales] | Typo inimbue() description | Yes | | |
| 49(i) | CD1 | 31.5.2.5 [ios.members.static] | Underspecification of ios_base::sync_with_stdio | Yes | | |
| 3675(i) | New | 31.5.2.6 [ios.base.storage] | std::ios_base::iword/pword might be misspecified | Yes | 4 | |
| 3083(i) | C++20 | 31.5.2.6 [ios.base.storage] | What shouldios::iword(-1) do? | Yes | 0 | |
| 36(i) | TC1 | 31.5.2.6 [ios.base.storage] | Iword & pword storage lifetime omitted | Yes | | |
| 2600(i) | NAD | 31.5.2.6 [ios.base.storage] | ios_base must store inaccessible iostate flags | Yes | | |
| 157(i) | Dup | 31.5.2.6 [ios.base.storage] | Meaningless error handling forpword() andiword() | Yes | | 41 |
| 2675(i) | New | 31.5.2.7 [ios.base.callback] | register_callback can fail | No | 3 | |
| 4192(i) | New | 31.5.2.8 [ios.base.cons] | §[ios.base.cons]ios_base members may not have indeterminate values after construction | Yes | 3 | |
| 3434(i) | C++23 | 31.5.2.8 [ios.base.cons] | ios_base never reclaims memory foriarray andparray | Yes | | |
| 220(i) | TC1 | 31.5.2.8 [ios.base.cons] | ~ios_base() usage valid? | Yes | | |
| 441(i) | CD1 | 31.5.3 [fpos] | Is fpos::state const? | Yes | | |
| 6(i) | NAD | 31.5.3 [fpos] | File position not an offset unimplementable | Yes | | |
| 332(i) | NAD | 31.5.3 [fpos] | Consider adding increment and decrement operators to std::fpos< T > | Yes | | |
| 573(i) | NAD | 31.5.3 [fpos] | C++0x file positioning should handle modern file sizes | Yes | | |
| 3118(i) | C++23 | 31.5.3.3 [fpos.operations] | fpos equality comparison unspecified | Yes | 4 | |
| 52(i) | TC1 | 31.5.3.3 [fpos.operations] | Small I/O problems | Yes | | |
| 2808(i) | Resolved | 31.5.3.3 [fpos.operations] | Requirements forfpos andstateT | Yes | 4 | |
| 2832(i) | Resolved | 31.5.3.3 [fpos.operations] | §[fpos.operations] strange requirement forP(i) | Yes | 3 | |
| 1444(i) | Dup | 31.5.3.3 [fpos.operations] | OFF_T is not defined | Yes | | 1414 |
| 194(i) | NAD | 31.5.4 [ios] | rdbuf() functions poorly specified | Yes | | |
| 2214(i) | Open | 31.5.4.2 [basic.ios.cons] | Clarifybasic_ios::init call restrictions | Yes | 4 | |
| 1249(i) | C++11 | 31.5.4.2 [basic.ios.cons] | basic_ios default ctor | Yes | | |
| 53(i) | TC1 | 31.5.4.2 [basic.ios.cons] | Basic_ios destructor unspecified | Yes | | |
| 145(i) | NAD | 31.5.4.2 [basic.ios.cons] | adjustfield lacks default value | Yes | | |
| 835(i) | C++11 | 31.5.4.3 [basic.ios.members] | Tying two streams together (correction to DR 581) | Yes | | |
| 1104(i) | C++11 | 31.5.4.3 [basic.ios.members] | basic_ios::move should accept lvalues | Yes | | |
| 1183(i) | C++11 | 31.5.4.3 [basic.ios.members] | basic_ios::set_rdbuf may break class invariants | Yes | | |
| 256(i) | CD1 | 31.5.4.3 [basic.ios.members] | typo in 27.4.4.2, p17: copy_event does not exist | Yes | | |
| 292(i) | CD1 | 31.5.4.3 [basic.ios.members] | effects of a.copyfmt (a) | Yes | | |
| 837(i) | NAD Editorial | 31.5.4.3 [basic.ios.members] | basic_ios::copyfmt() overly loosely specified | Yes | | |
| 1094(i) | C++11 | 31.5.4.4 [iostate.flags] | Replace "unspecified-bool-type" by "explicit operator bool() const" in I/O library | Yes | | |
| 272(i) | CD1 | 31.5.4.4 [iostate.flags] | Missing parentheses around subexpression | Yes | | 569 |
| 412(i) | CD1 | 31.5.4.4 [iostate.flags] | Typo in 27.4.4.3 | Yes | | 429 |
| 468(i) | CD1 | 31.5.4.4 [iostate.flags] | unexpected consequences of ios_base::operator void*() | Yes | | |
| 429(i) | Dup | 31.5.4.4 [iostate.flags] | typo in basic_ios::clear(iostate) | Yes | | 412 |
| 569(i) | Dup | 31.5.4.4 [iostate.flags] | Postcondition for basic_ios::clear(iostate) incorrectly stated | Yes | | 272 |
| 2504(i) | New | 31.6.3 [streambuf] | basic_streambuf is not an abstract class | No | 3 | |
| 56(i) | TC1 | 31.6.3 [streambuf] | Showmanyc's return type | Yes | | |
| 122(i) | TC1 | 31.6.3 [streambuf] | streambuf/wstreambuf description should not say they are specializations | Yes | | |
| 255(i) | NAD | 31.6.3 [streambuf] | Why dobasic_streambuf<>::pbump() andgbump() take an int? | Yes | | |
| 54(i) | TC1 | 31.6.3.2 [streambuf.cons] | Basic_streambuf's destructor | Yes | | |
| 421(i) | NAD | 31.6.3.2 [streambuf.cons] | isbasic_streambuf copy-constructible? | Yes | | |
| 3658(i) | New | 31.6.3.3.5 [streambuf.pub.put] | basic_streambuf::sputn is both overspecified and underspecified | Yes | 3 | |
| 4023(i) | WP | 31.6.3.4 [streambuf.protected] | Preconditions ofstd::basic_streambuf::setg/setp | Yes | | |
| 59(i) | TC1 | 31.6.3.4.2 [streambuf.get.area] | Ambiguity in specification of gbump | Yes | | |
| 364(i) | CD1 | 31.6.3.5.2 [streambuf.virt.buffer] | Inconsistent wording in 27.5.2.4.2 | Yes | | |
| 158(i) | TC1 | 31.6.3.5.2 [streambuf.virt.buffer] | Underspecified semantics forsetbuf() | Yes | | |
| 159(i) | TC1 | 31.6.3.5.3 [streambuf.virt.get] | Strange use ofunderflow() | Yes | | |
| 32(i) | TC1 | 31.6.3.5.4 [streambuf.virt.pback] | Pbackfail description inconsistent | Yes | | |
| 565(i) | C++11 | 31.6.3.5.5 [streambuf.virt.put] | xsputn inefficient | Yes | | |
| 567(i) | CD1 | 31.7 [iostream.format] | streambuf inserter and extractor should be unformatted | Yes | | |
| 1445(i) | Resolved | 31.7 [iostream.format] | Several iostreams member functions incorrectly specified | Yes | | |
| 1447(i) | Resolved | 31.7 [iostream.format] | Request to resolve issue LWG 1328 | Yes | | |
| 309(i) | NAD | 31.7 [iostream.format] | Does sentry catch exceptions? | Yes | | |
| 1148(i) | NAD | 31.7 [iostream.format] | Wrong argument type of I/O stream manipulatorssetprecision()andsetw() | Yes | | |
| 1446(i) | NAD | 31.7 [iostream.format] | Move and swap for I/O streams | Yes | | |
| 911(i) | C++11 | 31.7.5 [input.streams] | I/O streams andmove/swap semantic | Yes | | |
| 160(i) | TC1 | 31.7.5.2 [istream] | Typo: Use of non-existing functionexception() | Yes | | |
| 113(i) | NAD | 31.7.5.2 [istream] | Missing/extra iostream sync semantics | Yes | | |
| 2036(i) | NAD | 31.7.5.2 [istream] | istream >> char andeofbit | Yes | | |
| 419(i) | C++11 | 31.7.5.2.4 [istream.sentry] | istream extractors not settingfailbit ifeofbit is already set | Yes | | |
| 26(i) | TC1 | 31.7.5.2.4 [istream.sentry] | Bad sentry example | Yes | | |
| 195(i) | TC1 | 31.7.5.2.4 [istream.sentry] | Shouldbasic_istream::sentry's constructor ever set eofbit? | Yes | | |
| 1328(i) | Resolved | 31.7.5.2.4 [istream.sentry] | istream extractors not settingfailbit ifeofbit is already set | Yes | | |
| 203(i) | NAD | 31.7.5.2.4 [istream.sentry] | basic_istream::sentry::sentry() is uninstantiable with ctype<user-defined type> | Yes | | |
| 373(i) | CD1 | 31.7.5.3.1 [istream.formatted.reqmts] | Are basic_istream and basic_ostream to use (exceptions()&badbit) != 0 ? | Yes | | |
| 60(i) | TC1 | 31.7.5.3.1 [istream.formatted.reqmts] | What is a formatted input function? | Yes | | 162,163,166 |
| 2349(i) | Resolved | 31.7.5.3.1 [istream.formatted.reqmts] | Clarify input/output function rethrow behavior | Yes | 3 | |
| 696(i) | C++11 | 31.7.5.3.2 [istream.formatted.arithmetic] | istream::operator>>(int&) broken | Yes | | |
| 118(i) | CD1 | 31.7.5.3.2 [istream.formatted.arithmetic] | basic_istream uses nonexistentnum_get member functions | Yes | | |
| 661(i) | CD1 | 31.7.5.3.2 [istream.formatted.arithmetic] | New 27.6.1.2.2 changes make special extractions useless | Yes | | |
| 161(i) | TC1 | 31.7.5.3.2 [istream.formatted.arithmetic] | Typo:istream_iterator vs.istreambuf_iterator | Yes | | |
| 413(i) | CD1 | 31.7.5.3.3 [istream.extractors] | Proposed resolution to LDR#64 still wrong | Yes | | |
| 13(i) | TC1 | 31.7.5.3.3 [istream.extractors] | Eos refuses to die | Yes | | |
| 64(i) | TC1 | 31.7.5.3.3 [istream.extractors] | Exception handling inbasic_istream::operator>>(basic_streambuf*) | Yes | | |
| 68(i) | TC1 | 31.7.5.3.3 [istream.extractors] | Extractors for char* should store null at end | Yes | | |
| 2499(i) | Resolved | 31.7.5.3.3 [istream.extractors] | operator>>(basic_istream&, CharT*) makes it hard to avoid buffer overflows | Yes | 2 | |
| 58(i) | NAD | 31.7.5.3.3 [istream.extractors] | Extracting a char from a wide-oriented stream | Yes | | |
| 639(i) | NAD | 31.7.5.3.3 [istream.extractors] | Still problems with exceptions during streambuf IO | Yes | | |
| 162(i) | Dup | 31.7.5.3.3 [istream.extractors] | Really "formatted input functions"? | Yes | | 60 |
| 3464(i) | C++23 | 31.7.5.4 [istream.unformatted] | istream::gcount() can overflow | Yes | 0 | |
| 2243(i) | C++20 | 31.7.5.4 [istream.unformatted] | istream::putback problem | Yes | 3 | |
| 2244(i) | C++17 | 31.7.5.4 [istream.unformatted] | Issue onbasic_istream::seekg | Yes | 3 | |
| 2085(i) | C++14 | 31.7.5.4 [istream.unformatted] | Wrong description of effect 1 ofbasic_istream::ignore | Yes | | |
| 136(i) | CD1 | 31.7.5.4 [istream.unformatted] | seekp, seekg setting wrong streams? | Yes | | |
| 243(i) | CD1 | 31.7.5.4 [istream.unformatted] | get andgetline when sentry reports failure | Yes | | |
| 370(i) | CD1 | 31.7.5.4 [istream.unformatted] | Minor error in basic_istream::get | Yes | | |
| 531(i) | CD1 | 31.7.5.4 [istream.unformatted] | array forms of unformatted input functions | Yes | | |
| 537(i) | CD1 | 31.7.5.4 [istream.unformatted] | Typos in the signatures in 27.6.1.3/42-43 and 27.6.2.4 | Yes | | |
| 566(i) | CD1 | 31.7.5.4 [istream.unformatted] | array forms of unformatted input function undefined for zero-element arrays | Yes | | |
| 61(i) | TC1 | 31.7.5.4 [istream.unformatted] | Ambiguity in iostreams exception policy | Yes | | |
| 62(i) | TC1 | 31.7.5.4 [istream.unformatted] | Sync's return value | Yes | | |
| 129(i) | TC1 | 31.7.5.4 [istream.unformatted] | Need error indication from seekp() and seekg() | Yes | | |
| 172(i) | TC1 | 31.7.5.4 [istream.unformatted] | Inconsistent types forbasic_istream::ignore() | Yes | | |
| 342(i) | NAD | 31.7.5.4 [istream.unformatted] | seek and eofbit | Yes | | |
| 399(i) | NAD | 31.7.5.4 [istream.unformatted] | volations of unformatted input function requirements | Yes | | |
| 2131(i) | NAD | 31.7.5.4 [istream.unformatted] | Member function getline taking a string as parameter | Yes | | |
| 163(i) | Dup | 31.7.5.4 [istream.unformatted] | Return ofgcount() after a call togcount | Yes | | 60 |
| 415(i) | CD1 | 31.7.5.5 [istream.manip] | behavior of std::ws | Yes | | |
| 2328(i) | C++17 | 31.7.5.6 [istream.rvalue] | Rvalue stream extraction should use perfect forwarding | Yes | 3 | |
| 2498(i) | Resolved | 31.7.5.6 [istream.rvalue] | operator>>(basic_istream&&, T&&) returnsbasic_istream&, but should probably returnbasic_istream&& | Yes | 3 | |
| 271(i) | CD1 | 31.7.5.7 [iostreamclass] | basic_iostream missing typedefs | Yes | | |
| 135(i) | NAD | 31.7.5.7.2 [iostream.cons] | basic_iostream doubly initialized | Yes | | |
| 2221(i) | C++17 | 31.7.6 [output.streams] | No formatted output operator fornullptr | Yes | 3 | |
| 2342(i) | New | 31.7.6.2 [ostream] | User conversion towchar_t const* or towchar_t not invoked foroperator<< | Yes | 4 | |
| 165(i) | CD1 | 31.7.6.2 [ostream] | xsputn(),pubsync() never called bybasic_ostream members? | Yes | | |
| 311(i) | CD1 | 31.7.6.2 [ostream] | Incorrect wording in basic_ostream class synopsis | Yes | | |
| 2497(i) | New | 31.7.6.2.4 [ostream.sentry] | Use ofuncaught_exception() | Yes | 3 | |
| 4188(i) | WP | 31.7.6.2.4 [ostream.sentry] | ostream::sentry destructor should handle exceptions | Yes | | |
| 442(i) | CD1 | 31.7.6.2.4 [ostream.sentry] | sentry::operator bool() inconsistent signature | Yes | | |
| 397(i) | NAD Editorial | 31.7.6.2.4 [ostream.sentry] | ostream::sentry dtor throws exceptions | Yes | | |
| 398(i) | NAD | 31.7.6.2.4 [ostream.sentry] | effects of end-of-file on unformatted input functions | Yes | | |
| 2341(i) | C++14 | 31.7.6.2.5 [ostream.seeks] | Inconsistency betweenbasic_ostream::seekp(pos) andbasic_ostream::seekp(off, dir) | Yes | 0 | |
| 3667(i) | NAD | 31.7.6.3 [ostream.formatted] | std::cout << &X::f prints1 | Yes | | |
| 394(i) | NAD | 31.7.6.3.1 [ostream.formatted.reqmts] | behavior of formatted output on failure | Yes | | |
| 4101(i) | New | 31.7.6.3.2 [ostream.inserters.arithmetic] | LWG 117 loses the sign for negative NaN on some architectures | Yes | 3 | |
| 117(i) | CD1 | 31.7.6.3.2 [ostream.inserters.arithmetic] | basic_ostream uses nonexistentnum_put member functions | Yes | | |
| 640(i) | CD1 | 31.7.6.3.2 [ostream.inserters.arithmetic] | 27.6.2.5.2 does not handle(unsigned) long long | Yes | | |
| 437(i) | NAD | 31.7.6.3.2 [ostream.inserters.arithmetic] | Formatted output of function pointers is confusing | Yes | | |
| 166(i) | Dup | 31.7.6.3.3 [ostream.inserters] | Really "formatted output functions"? | Yes | | 60 |
| 167(i) | CD1 | 31.7.6.3.4 [ostream.inserters.character] | Improper use oftraits_type::length() | Yes | | |
| 474(i) | CD1 | 31.7.6.3.4 [ostream.inserters.character] | confusing Footnote 297 | Yes | | |
| 4039(i) | New | 31.7.6.3.5 [ostream.formatted.print] | §[ostream.formatted.print]: Inappropriate usage ofbadbit in definition ofvprint_unicode/vprint_nonunicode | Yes | 4 | |
| 4088(i) | WP | 31.7.6.3.5 [ostream.formatted.print] | println ignores the locale imbued instd::ostream | Yes | | |
| 581(i) | CD1 | 31.7.6.4 [ostream.unformatted] | flush() not unformatted function | Yes | | |
| 63(i) | TC1 | 31.7.6.4 [ostream.unformatted] | Exception-handling policy for unformatted output | Yes | | |
| 168(i) | TC1 | 31.7.6.4 [ostream.unformatted] | Typo: formatted vs. unformatted | Yes | | |
| 3501(i) | New | 31.7.6.5 [ostream.manip] | basic_syncbuf-related manipulators refer to someAllocator without defining it | Yes | 3 | |
| 3571(i) | C++23 | 31.7.6.5 [ostream.manip] | flush_emit should setbadbit if theemit call fails | Yes | | |
| 333(i) | CD1 | 31.7.6.5 [ostream.manip] | does endl imply synchronization with the device? | Yes | | |
| 1203(i) | C++20 | 31.7.6.6 [ostream.rvalue] | More useful rvalue stream insertion | Yes | 2 | |
| 2534(i) | C++17 | 31.7.6.6 [ostream.rvalue] | Constrain rvalue stream operators | Yes | 3 | |
| 4364(i) | New | 31.7.7 [std.manip] | SFINAE-friendliness onoperator<< andoperator>> for unspecified I/O manipulators | No | 4 | |
| 3937(i) | New | 31.7.7 [std.manip] | I/O manipulators should be specified in terms of base classes | No | 3 | |
| 183(i) | CD1 | 31.7.7 [std.manip] | I/O stream manipulators don't work for wide character streams | Yes | | |
| 216(i) | Dup | 31.7.7 [std.manip] | setbase manipulator description flawed | Yes | | 193 |
| 2984(i) | New | 31.7.8 [ext.manip] | put_money(99) is unnecessarily undefined | Yes | 3 | |
| 810(i) | C++11 | 31.7.8 [ext.manip] | Missing traits dependencies in operational semantics of extended manipulators | Yes | | |
| 1299(i) | C++11 | 31.7.8 [ext.manip] | Confusing typo in specification forget_time | Yes | | |
| 692(i) | CD1 | 31.7.8 [ext.manip] | get_money andput_money should be formatted I/O functions | Yes | | |
| 641(i) | NAD Editorial | 31.7.8 [ext.manip] | Editorial fix for 27.6.4 (N2134) | Yes | | |
| 2785(i) | C++17 | 31.7.9 [quoted.manip] | quoted should work withbasic_string_view | Yes | 0 | |
| 2272(i) | C++14 | 31.7.9 [quoted.manip] | quoted should usechar_traits::eq for character comparison | Yes | | |
| 2344(i) | C++14 | 31.7.9 [quoted.manip] | quoted()'s interaction with padding is unclear | Yes | 1 | |
| 4044(i) | WP | 31.7.10 [print.fun] | Confusing requirements forstd::print on POSIX platforms | Yes | 3 | |
| 4042(i) | Resolved | 31.7.10 [print.fun] | std::print should permit an efficient implementation | Yes | 3 | |
| 3309(i) | New | 31.8 [string.streams] | Is<ios> implicitly#included by<sstream>,<fstream> etc.? | No | 3 | |
| 252(i) | CD1 | 31.8 [string.streams] | missing casts/C-style casts used in iostreams | Yes | | |
| 562(i) | CD1 | 31.8 [string.streams] | stringbuf ctor inefficient | Yes | | |
| 128(i) | NAD | 31.8 [string.streams] | Need open_mode() function for file stream, string streams, file buffers, and string buffers | Yes | | |
| 251(i) | CD1 | 31.8.2 [stringbuf] | basic_stringbuf missing allocator_type | Yes | | |
| 2995(i) | C++20 | 31.8.2.2 [stringbuf.cons] | basic_stringbuf default constructor forbids it from using SSO capacity | Yes | 3 | |
| 238(i) | CD1 | 31.8.2.2 [stringbuf.cons] | Contradictory results of stringbuf initialization. | Yes | | |
| 3006(i) | Resolved | 31.8.2.2 [stringbuf.cons] | Constructing abasic_stringbuf from astring — where does the allocator come from? | Yes | 3 | |
| 1251(i) | NAD | 31.8.2.2 [stringbuf.cons] | move constructingbasic_stringbuf | Yes | | |
| 3992(i) | Tentatively NAD | 31.8.2.4 [stringbuf.members] | basic_stringbuf::str()&& should enforce 𝒪(1) | Yes | 4 | |
| 1448(i) | C++11 | 31.8.2.4 [stringbuf.members] | Concerns aboutbasic_stringbuf::str(basic_string) postconditions | Yes | | |
| 3097(i) | New | 31.8.2.5 [stringbuf.virtuals] | basic_stringbuf seekoff effects trigger undefined behavior and have contradictory returns | No | 3 | |
| 2286(i) | Open | 31.8.2.5 [stringbuf.virtuals] | stringbuf::underflow() underspecified | Yes | 4 | |
| 564(i) | C++11 | 31.8.2.5 [stringbuf.virtuals] | stringbuf seekpos underspecified | Yes | | |
| 375(i) | CD1 | 31.8.2.5 [stringbuf.virtuals] | basic_ios should be ios_base in 27.7.1.3 | Yes | | |
| 376(i) | CD1 | 31.8.2.5 [stringbuf.virtuals] | basic_streambuf semantics | Yes | | |
| 432(i) | CD1 | 31.8.2.5 [stringbuf.virtuals] | stringbuf::overflow() makes only one write position available | Yes | | |
| 453(i) | CD1 | 31.8.2.5 [stringbuf.virtuals] | basic_stringbuf::seekoff need not always fail for an empty stream | Yes | | |
| 563(i) | CD1 | 31.8.2.5 [stringbuf.virtuals] | stringbuf seeking from end | Yes | | |
| 169(i) | TC1 | 31.8.2.5 [stringbuf.virtuals] | Bad efficiency ofoverflow() mandated | Yes | | |
| 1449(i) | C++11 | 31.8.3 [istringstream] | Incomplete specification of header<cinttypes> | Yes | | |
| 2429(i) | NAD | 31.8.4 [ostringstream] | std::basic_ostringstream is missing an allocator-extended constructor | Yes | | |
| 45(i) | NAD | 31.8.4 [ostringstream] | Stringstreams read/write pointers initial position unclear | Yes | | |
| 170(i) | TC1 | 31.8.5 [stringstream] | Inconsistent definition oftraits_type | Yes | | |
| 2121(i) | NAD | 31.8.5.2 [stringstream.cons] | app for string streams | Yes | 3 | |
| 2676(i) | C++17 | 31.10 [file.streams] | Providefilesystem::path overloads forFile-based streams | Yes | 2 | |
| 420(i) | CD1 | 31.10 [file.streams] | is std::FILE a complete type? | Yes | | |
| 444(i) | CD1 | 31.10 [file.streams] | Bad use of casts in fstream | Yes | | |
| 460(i) | CD1 | 31.10 [file.streams] | Default modes missing from basic_fstream member specifications | Yes | | |
| 73(i) | NAD | 31.10 [file.streams] | is_open should be const | Yes | | |
| 863(i) | NAD | 31.10 [file.streams] | What is the state of a stream after close() succeeds | Yes | | |
| 105(i) | Dup | 31.10 [file.streams] | fstream ctors argument types desired | Yes | | 454 |
| 3430(i) | C++23 | 31.10.1 [fstream.syn] | std::fstream & co. should be constructible fromstring_view | Yes | 3 | |
| 643(i) | CD1 | 31.10.3 [filebuf] | Impossible "as if" clauses | Yes | | |
| 2943(i) | C++20 | 31.10.3.4 [filebuf.members] | Problematic specification of the wide version ofbasic_filebuf::open | Yes | 2 | |
| 443(i) | CD1 | 31.10.3.4 [filebuf.members] | filebuf::close() inconsistent use of EOF | Yes | | |
| 596(i) | CD1 | 31.10.3.4 [filebuf.members] | 27.8.1.3 Table 112 omits "a+" and "a+b" modes | Yes | | |
| 454(i) | NAD | 31.10.3.4 [filebuf.members] | basic_filebuf::open should acceptwchar_t names | Yes | | 105 |
| 2473(i) | C++17 | 31.10.3.5 [filebuf.virtuals] | basic_filebuf's relation to CFILE semantics | Yes | 2 | |
| 171(i) | CD1 | 31.10.3.5 [filebuf.virtuals] | Strangeseekpos() semantics due to joint position | Yes | | |
| 173(i) | TC1 | 31.10.3.5 [filebuf.virtuals] | Inconsistent types forbasic_filebuf::setbuf() | Yes | | |
| 900(i) | C++11 | 31.10.4 [ifstream] | Stream move-assignment | Yes | | |
| 285(i) | CD1 | 31.10.4.2 [ifstream.cons] | minor editorial errors in fstream ctors | Yes | | |
| 409(i) | CD1 | 31.10.4.4 [ifstream.members] | Closing an fstream should clear error state | Yes | | |
| 22(i) | TC1 | 31.10.4.4 [ifstream.members] | Member open vs. flags | Yes | | |
| 592(i) | NAD Editorial | 31.10.4.4 [ifstream.members] | Incorrect treatment of rdbuf()->close() return type | Yes | | |
| 642(i) | NAD Editorial | 31.10.4.4 [ifstream.members] | Invalidated fstream footnotes in N2134 | Yes | | |
| 1150(i) | Resolved | 31.10.6 [fstream] | wchar_t, char16_t and char32_t filenames | Yes | | |
| 622(i) | CD1 | 31.10.6.4 [fstream.members] | behavior offilebuf dtor andclose on error | Yes | | |
| 3498(i) | C++23 | 31.11.2.1 [syncstream.syncbuf.overview] | Inconsistentnoexcept-specifiers forbasic_syncbuf | Yes | 3 | |
| 3253(i) | C++20 | 31.11.2.1 [syncstream.syncbuf.overview] | basic_syncbuf::basic_syncbuf() should not be explicit | Yes | 0 | |
| 3399(i) | NAD | 31.11.2.1 [syncstream.syncbuf.overview] | basic_syncbuf::emit() + Qt's#define emit = Big Bada-Boom | Yes | | |
| 3496(i) | New | 31.11.2.4 [syncstream.syncbuf.members] | What does "uniquely associated" mean forbasic_syncbuf::emit()? | No | 3 | |
| 3497(i) | New | 31.11.2.4 [syncstream.syncbuf.members] | Postconditions forbasic_syncbuf::emit() | No | 3 | |
| 3616(i) | C++23 | 31.11.2.6 [syncstream.syncbuf.special] | LWG 3498 seems to miss the non-memberswap forbasic_syncbuf | Yes | | |
| 3334(i) | C++20 | 31.11.3 [syncstream.osyncstream] | basic_osyncstream move assignment and destruction callsbasic_syncbuf::emit() twice | Yes | 3 | |
| 3867(i) | C++23 | 31.11.3.1 [syncstream.osyncstream.overview] | Shouldstd::basic_osyncstream's move assignment operator benoexcept? | Yes | | |
| 3127(i) | C++20 | 31.11.3.1 [syncstream.osyncstream.overview] | basic_osyncstream::rdbuf needs aconst_cast | Yes | 0 | |
| 3570(i) | C++23 | 31.11.3.3 [syncstream.osyncstream.members] | basic_osyncstream::emit should be an unformatted output function | Yes | | |
| 2680(i) | C++17 | 31.12 [filesystems] | Add "Equivalent to" to filesystem | Yes | 2 | |
| 2666(i) | NAD Editorial | 31.12 [filesystems] | Bitmask operations should use bitmask terms | Yes | 3 | |
| 3657(i) | C++23 | 31.12.6 [fs.class.path] | std::hash<std::filesystem::path> is not enabled | Yes | | |
| 2707(i) | C++17 | 31.12.6 [fs.class.path] | path construction and assignment should have "string_type&&" overloads | Yes | 0 | |
| 2798(i) | Resolved | 31.12.6 [fs.class.path] | Definition of path in terms of a string | Yes | 2 | |
| 2668(i) | NAD | 31.12.6 [fs.class.path] | path::operator+= is defined, but notoperator+ | Yes | 3 | |
| 3244(i) | C++20 | 31.12.6.4 [fs.path.req] | Constraints forSource in §[fs.path.req] insufficiently constrainty | Yes | 0 | |
| 2711(i) | C++17 | 31.12.6.5.1 [fs.path.construct] | path is convertible from approximately everything under the sun | Yes | 1 | |
| 2664(i) | C++17 | 31.12.6.5.3 [fs.path.append] | operator/ (and other append) semantics not useful if argument has root | Yes | 2 | |
| 2732(i) | C++17 | 31.12.6.5.3 [fs.path.append] | Questionable specification ofpath::operator/= andpath::append | Yes | 2 | |
| 3055(i) | C++20 | 31.12.6.5.4 [fs.path.concat] | path::operator+=(single-character) misspecified | Yes | 3 | |
| 2734(i) | Resolved | 31.12.6.5.4 [fs.path.concat] | Questionable specification in [fs.path.concat] | Yes | 2 | |
| 2665(i) | Resolved | 31.12.6.5.5 [fs.path.modifiers] | remove_filename() post condition is incorrect | Yes | 1 | |
| 2966(i) | C++20 | 31.12.6.5.6 [fs.path.native.obs] | Incomplete resolution of US 74 | Yes | | |
| 2936(i) | C++20 | 31.12.6.5.8 [fs.path.compare] | Path comparison is defined in terms of the generic format | Yes | 2 | |
| 3098(i) | New | 31.12.6.5.9 [fs.path.decompose] | Misleading example forfilesystem::path::filename() | Yes | 3 | |
| 2667(i) | C++17 | 31.12.6.5.9 [fs.path.decompose] | path::root_directory() description is confusing | Yes | 0 | |
| 3699(i) | New | 31.12.6.5.11 [fs.path.gen] | lexically_relative on UNC drive paths (\\?\C:\...) results in a default-constructed value | No | 3 | |
| 3070(i) | C++20 | 31.12.6.5.11 [fs.path.gen] | path::lexically_relative causes surprising results if a filename can also be aroot-name | Yes | 2 | |
| 3096(i) | C++20 | 31.12.6.5.11 [fs.path.gen] | path::lexically_relative is confused by trailing slashes | Yes | 2 | |
| 3794(i) | New | 31.12.6.6 [fs.path.itr] | std::filesystem::path::iterator::reference should be allowed to bestd::filesystem::path | Yes | 3 | |
| 2674(i) | C++17 | 31.12.6.6 [fs.path.itr] | Bidirectional iterator requirement onpath::iteratoris very expensive | Yes | 2 | |
| 2989(i) | C++20 | 31.12.6.7 [fs.path.io] | path's stream insertion operator lets you insert everything under the sun | Yes | 2 | |
| 3065(i) | C++20 | 31.12.6.8 [fs.path.nonmember] | LWG 2989 missed that allpath's other operators should be hidden friends as well | Yes | 2 | |
| 4070(i) | Open | 31.12.6.9.2 [fs.path.fmtr.funcs] | Transcoding bystd::formatter<std::filesystem::path> | Yes | 2 | |
| 2965(i) | C++20 | 31.12.7.2 [fs.filesystem.error.members] | Non-existingpath::native_string() infilesystem_error::what() specification | Yes | 0 | |
| 3043(i) | C++20 | 31.12.7.2 [fs.filesystem.error.members] | Bogus postcondition forfilesystem_error constructor | Yes | 0 | |
| 2947(i) | New | 31.12.8.1 [fs.enum.path.format] | Clarify several filesystem terms | No | 3 | |
| 2851(i) | C++20 | 31.12.8.2 [fs.enum.file.type] | std::filesystem enum classes are now underspecified | Yes | 2 | |
| 2678(i) | C++17 | 31.12.8.2 [fs.enum.file.type] | std::filesystem enum classes overspecified | Yes | 3 | |
| 2787(i) | C++17 | 31.12.9 [fs.class.file.status] | §[fs.file_status.cons] doesn't match class definition | Yes | 0 | |
| 3078(i) | New | 31.12.10 [fs.class.directory.entry] | directory_entry,directory_iterator andrecursive_directory_iterator perform needless path copies | No | 3 | |
| 3171(i) | C++23 | 31.12.10 [fs.class.directory.entry] | LWG 2989 breaksdirectory_entry stream insertion | Yes | 2 | |
| 2677(i) | Resolved | 31.12.10.4 [fs.dir.entry.obs] | directory_entry::status is not allowed to be cached as a quality-of-implementation issue | Yes | 2 | |
| 2761(i) | NAD | 31.12.10.4 [fs.dir.entry.obs] | directory_entry comparisons are members | Yes | 2 | |
| 3480(i) | C++23 | 31.12.11 [fs.class.directory.iterator] | directory_iterator andrecursive_directory_iterator are not C++20 ranges | Yes | 3 | |
| 2723(i) | C++17 | 31.12.11 [fs.class.directory.iterator] | Dodirectory_iterator andrecursive_directory_iterator become the end iterator upon error? | Yes | 0 | |
| 3719(i) | C++23 | 31.12.11.1 [fs.class.directory.iterator.general] | Directory iterators should be usable with default sentinel | Yes | | |
| 3668(i) | New | 31.12.11.2 [fs.dir.itr.members] | [recursive_]directory_iterator constructors refer to undefinedoptions | Yes | 3 | |
| 3013(i) | C++20 | 31.12.11.2 [fs.dir.itr.members] | (recursive_)directory_iterator construction and traversal should not benoexcept | Yes | 0 | |
| 2726(i) | C++17 | 31.12.11.2 [fs.dir.itr.members] | [recursive_]directory_iterator::increment(error_code&) is underspecified | Yes | 0 | |
| 2840(i) | Resolved | 31.12.11.2 [fs.dir.itr.members] | directory_iterator::increment is seemingly narrow-contract but markednoexcept | Yes | 2 | |
| 2706(i) | C++17 | 31.12.12 [fs.class.rec.dir.itr] | Error reporting forrecursive_directory_iterator::pop() is under-specified | Yes | 0 | |
| 2708(i) | Open | 31.12.12.2 [fs.rec.dir.itr.members] | recursive_directory_iterator::recursion_pending() is incorrectly specified | Yes | 2 | |
| 3067(i) | C++20 | 31.12.12.2 [fs.rec.dir.itr.members] | recursive_directory_iterator::pop must invalidate | Yes | 0 | |
| 2669(i) | C++17 | 31.12.12.2 [fs.rec.dir.itr.members] | recursive_directory_iterator effects refers to non-existent functions | Yes | 0 | |
| 2704(i) | C++17 | 31.12.12.2 [fs.rec.dir.itr.members] | recursive_directory_iterator's members should require '*this is dereferenceable' | Yes | 1 | |
| 4279(i) | New | 31.12.13.2 [fs.op.absolute] | §[fs.op.absolute] Non-normative encouragement should beRecommended practice | No | 4 | |
| 2956(i) | C++17 | 31.12.13.3 [fs.op.canonical] | filesystem::canonical() still defined in terms ofabsolute(p, base) | Yes | 1 | |
| 3057(i) | Open | 31.12.13.4 [fs.op.copy] | Correctcopy_options handling | Yes | 2 | |
| 2682(i) | C++20 | 31.12.13.4 [fs.op.copy] | filesystem::copy() won't create a symlink to a directory | Yes | 2 | |
| 3015(i) | C++20 | 31.12.13.4 [fs.op.copy] | copy_options::unspecified underspecified | Yes | 3 | |
| 2671(i) | C++17 | 31.12.13.4 [fs.op.copy] | Errors in Copy | Yes | 0 | |
| 2681(i) | C++17 | 31.12.13.4 [fs.op.copy] | filesystem::copy() cannot copy symlinks | Yes | 2 | |
| 2683(i) | C++17 | 31.12.13.4 [fs.op.copy] | filesystem::copy() says "no effects" | Yes | 3 | |
| 3056(i) | New | 31.12.13.5 [fs.op.copy.file] | copy_file() copies which attributes? | Yes | 3 | |
| 2849(i) | C++20 | 31.12.13.5 [fs.op.copy.file] | Why does!is_regular_file(from) causecopy_file to report a "file already exists" error? | Yes | 2 | |
| 3014(i) | C++20 | 31.12.13.5 [fs.op.copy.file] | Morenoexcept issues with filesystem operations | Yes | | |
| 2712(i) | C++17 | 31.12.13.5 [fs.op.copy.file] | copy_file(from, to, ...) has a number of unspecified error conditions | Yes | 2 | |
| 3744(i) | New | 31.12.13.6 [fs.op.copy.symlink] | copy_symlink(junction, new_symlink)'s behavior is unclear | No | 3 | |
| 2935(i) | C++20 | 31.12.13.7 [fs.op.create.directories] | What shouldcreate_directories do whenp already exists but is not a directory? | Yes | 0 | |
| 3079(i) | C++20 | 31.12.13.8 [fs.op.create.directory] | LWG 2935 forgot to fix theexisting_p overloads ofcreate_directory | Yes | 0 | |
| 2937(i) | C++20 | 31.12.13.13 [fs.op.equivalent] | Isequivalent("existing_thing", "not_existing_thing") an error? | Yes | 0 | |
| 2722(i) | C++17 | 31.12.13.13 [fs.op.equivalent] | equivalent incorrectly specifies throws clause | Yes | 3 | |
| 2725(i) | C++17 | 31.12.13.14 [fs.op.exists] | filesystem::exists(const path&, error_code&) error reporting | Yes | 1 | |
| 2663(i) | Resolved | 31.12.13.15 [fs.op.file.size] | Enable efficient retrieval of file size fromdirectory_entry | Yes | 2 | |
| 2672(i) | C++17 | 31.12.13.20 [fs.op.is.empty] | Should is_empty use error_code in its specification? | Yes | 3 | |
| 2719(i) | C++17 | 31.12.13.27 [fs.op.permissions] | permissions function should not benoexcept due to narrow contract | Yes | 0 | |
| 2720(i) | C++17 | 31.12.13.27 [fs.op.permissions] | permissions function incorrectly specified for symlinks | Yes | 2 | |
| 2721(i) | C++17 | 31.12.13.32 [fs.op.remove.all] | remove_all has incorrect post conditions | Yes | 3 | |
| 2816(i) | C++20 | 31.12.13.34 [fs.op.resize.file] | resize_file has impossible postcondition | Yes | 3 | |
| 2728(i) | C++17 | 31.12.13.36 [fs.op.status] | status(p).permissions() andsymlink_status(p).permissions() are not specified | Yes | 0 | |
| 2673(i) | C++17 | 31.12.13.36 [fs.op.status] | status() effects cannot be implemented as specified | Yes | 0 | |
| 3822(i) | C++23 | 31.12.13.40 [fs.op.weakly.canonical] | Avoiding normalization infilesystem::weakly_canonical | Yes | | |
| 3026(i) | C++20 | 31.12.13.40 [fs.op.weakly.canonical] | filesystem::weakly_canonical still defined in terms ofcanonical(p, base) | Yes | 0 | |
| 984(i) | C++11 | 31.13 [c.files] | Does<cinttypes> have macro guards? | Yes | | |
| 2548(i) | Resolved | 31.13 [c.files] | Missingvfscanf from<cstdio> | Yes | 3 | |
| 2249(i) | Resolved | 31.13 [c.files] | [CD] Removegets from<cstdio> | Yes | | |
| 2043(i) | NAD | 31.13 [c.files] | std{in,out,err} should be usable as field names | Yes | | |
| 3834(i) | C++23 | 31.13.2 [cinttypes.syn] | Missingconstexpr forstd::intmax_t math functions in<cinttypes> | Yes | | |
| Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates |
|---|
| 1089(i) | C++11 | 32 [thread] | Unify "Throws: Nothing." specifications | Yes | | |
| 1442(i) | NAD Editorial | 32 [thread] | "happens-before" should be "synchronizes-with" | Yes | | 1443 |
| 1443(i) | Dup | 32 [thread] | Imposed happens-before edges are not made transitive | Yes | | 1442 |
| 1139(i) | NAD Concepts | 32 [thread] | Thread support library not concept enabled | Yes | | |
| 1481(i) | Resolved | 32.2 [thread.req] | Missing Lockable requirements | Yes | | |
| 1108(i) | C++11 | 32.2.2 [thread.req.exception] | thread.req.exception overly constrains implementations | Yes | | |
| 2379(i) | NAD | 32.2.3 [thread.req.native] | Obtaining native handle of the current thread | Yes | | |
| 2941(i) | C++20 | 32.2.4 [thread.req.timing] | §[thread.req.timing] wording should apply to both member and namespace-level functions | Yes | 0 | |
| 1158(i) | C++11 | 32.2.4 [thread.req.timing] | Encouragement to use monotonic clock | Yes | | |
| 1482(i) | Resolved | 32.2.4 [thread.req.timing] | Timeout operations are under-specified | Yes | | |
| 2819(i) | New | 32.2.5 [thread.req.lockable] | UnspecifiedReturn type: elements | Yes | 3 | |
| 3499(i) | New | 32.2.5.4 [thread.req.lockable.timed] | Timed lockable and mutex requirements are imprecise aboutduration andtime_point | No | 3 | |
| 3924(i) | New | 32.3.1 [thread.stoptoken.intro] | Stop token data race avoidance requirements unclear | Yes | 3 | |
| 3254(i) | C++20 | 32.3.4 [stoptoken] | Strikestop_token'soperator!= | Yes | 0 | |
| 3362(i) | C++20 | 32.3.5 [stopsource] | Strikestop_source'soperator!= | Yes | 0 | |
| 4362(i) | Tentatively NAD | 32.3.8 [stoptoken.inplace] | Inconsistent usage ofconstexpr forinplace_stop_token andinplace_stop_source | Yes | | |
| 1483(i) | NAD Editorial | 32.4 [thread.threads] | __STDCPP_THREADS spelling | Yes | | |
| 1484(i) | LEWG | 32.4.3 [thread.thread.class] | Need a way to join a thread with a timeout | No | 4 | |
| 3516(i) | New | 32.4.3.2 [thread.thread.id] | thread::id spaceship may be inconsistent with equality | Yes | 3 | |
| 1277(i) | C++11 | 32.4.3.2 [thread.thread.id] | std::thread::id should be trivially copyable | Yes | | |
| 783(i) | CD1 | 32.4.3.2 [thread.thread.id] | thread::id reuse | Yes | | |
| 889(i) | Resolved | 32.4.3.2 [thread.thread.id] | thread::id comparisons | Yes | | |
| 1485(i) | NAD | 32.4.3.2 [thread.thread.id] | Unclearthread::id specification | Yes | | |
| 3475(i) | New | 32.4.3.3 [thread.thread.constr] | std::thread's constructor needs to be able to report general memory allocation failures | Yes | 3 | |
| 4310(i) | Core | 32.4.3.3 [thread.thread.constr] | Is "the completion of the invocation of the constructor" considered as an expression? | No | 4 | |
| 3476(i) | C++23 | 32.4.3.3 [thread.thread.constr] | thread andjthread constructors require that the parameters be move-constructible but never move construct the parameters | Yes | 0 | |
| 3039(i) | C++20 | 32.4.3.3 [thread.thread.constr] | Unnecessarydecay inthread andpackaged_task | Yes | 0 | |
| 891(i) | C++11 | 32.4.3.3 [thread.thread.constr] | std::thread,std::call_once issue | Yes | | |
| 929(i) | C++11 | 32.4.3.3 [thread.thread.constr] | Thread constructor | Yes | | |
| 967(i) | C++11 | 32.4.3.3 [thread.thread.constr] | Various threading bugs #17 | Yes | | |
| 1176(i) | NAD | 32.4.3.3 [thread.thread.constr] | Makethread constructor non-variadic | Yes | | |
| 963(i) | C++11 | 32.4.3.6 [thread.thread.member] | Various threading bugs #13 | Yes | | |
| 1033(i) | C++11 | 32.4.3.6 [thread.thread.member] | thread::join() effects? | Yes | | |
| 3788(i) | C++23 | 32.4.4.2 [thread.jthread.cons] | jthread::operator=(jthread&&) postconditions are unimplementable under self-assignment | Yes | 3 | |
| 888(i) | C++11 | 32.4.5 [thread.thread.this] | this_thread::yield too strong | Yes | | |
| 1487(i) | C++11 | 32.4.5 [thread.thread.this] | Clock related operations exception specifications conflict | Yes | | |
| 1486(i) | NAD | 32.4.5 [thread.thread.this] | Value ofthis_thread::get_id() underspecified for detached thread | Yes | | |
| 3633(i) | New | 32.5 [atomics] | Atomics are copy constructible and copy assignable fromvolatile atomics | Yes | 3 | |
| 880(i) | Resolved | 32.5 [atomics] | Missing atomic exchange parameter | Yes | | 942 |
| 923(i) | Resolved | 32.5 [atomics] | atomics with floating-point | Yes | | |
| 924(i) | Resolved | 32.5 [atomics] | structs with internal padding | Yes | | |
| 1143(i) | Resolved | 32.5 [atomics] | Atomic operations library not concept enabled | Yes | | |
| 1145(i) | Resolved | 32.5 [atomics] | Inappropriate headers for atomics | Yes | | |
| 1455(i) | Resolved | 32.5 [atomics] | C language compatibility for atomics | Yes | | 1454 |
| 1523(i) | Resolved | 32.5 [atomics] | noexcept for Clause 29 | Yes | | |
| 879(i) | NAD Editorial | 32.5 [atomics] | Atomic load const qualification | Yes | | |
| 937(i) | NAD Editorial | 32.5 [atomics] | Atomics for standard typedef types | Yes | | |
| 1456(i) | NAD | 32.5 [atomics] | Missing fixed-sizeatomic_ typedefs | Yes | | |
| 1461(i) | NAD | 32.5 [atomics] | Rename allATOMIC_* macros asSTD_ATOMIC_* | Yes | | |
| 942(i) | Dup | 32.5 [atomics] | Atomics synopsis typo | Yes | | 880 |
| 1454(i) | Dup | 32.5 [atomics] | Ensure C compatibility for atomics | Yes | | 1455 |
| 3220(i) | New | 32.5.2 [atomics.syn] | P0558 broke conforming C++14 uses of atomicshared_ptr | Yes | 3 | |
| 2236(i) | Open | 32.5.2 [atomics.syn] | kill_dependency unconditionally noexcept | No | 4 | |
| 3745(i) | C++23 | 32.5.2 [atomics.syn] | std::atomic_wait and its friends lacknoexcept | Yes | | |
| 2988(i) | C++20 | 32.5.2 [atomics.syn] | Clause 32 cleanup missed onetypename | Yes | 0 | |
| 1457(i) | Resolved | 32.5.2 [atomics.syn] | Splitting lock-free properties | Yes | | |
| 2037(i) | Resolved | 32.5.2 [atomics.syn] | atomic free functions incorrectly specified | Yes | | |
| 4309(i) | Tentatively NAD | 32.5.4 [atomics.order] | How are twoseq_cst operations ordered in the single total order if these two operations are unsequenced? | No | | |
| 3980(i) | Tentatively NAD | 32.5.4 [atomics.order] | The read exclusive ownership of an atomic read-modify-write operation and whether its read and write are two operations are unclear | Yes | | |
| 3999(i) | New | 32.5.4 [atomics.order] | P0439R0 changed the value category of memory order constants | Yes | 4 | |
| 3268(i) | New | 32.5.4 [atomics.order] | memory_order::memory_order_foo broken in C++20 | Yes | 4 | |
| 3941(i) | Open | 32.5.4 [atomics.order] | §[atomics.order] inadvertently prohibits widespread implementation techniques | No | 3 | |
| 2265(i) | Open | 32.5.4 [atomics.order] | 29.3p9 appears to rule out some acceptable executions | No | 4 | |
| 1459(i) | LEWG | 32.5.4 [atomics.order] | Overlapping evaluations are allowed | No | 4 | 1458 |
| 4174(i) | SG1 | 32.5.4 [atomics.order] | How does [atomics.order] p3 apply when then modification is an initialization? | No | 3 | |
| 4177(i) | SG1 | 32.5.4 [atomics.order] | §[atomics.order] p8 "circularly depend on their own computation" is unclear for loop | No | 4 | |
| 4004(i) | SG1 | 32.5.4 [atomics.order] | The load and store operation in §[atomics.order] p1 is ambiguous | No | 3 | |
| 2130(i) | C++14 | 32.5.4 [atomics.order] | Missing ordering constraints | Yes | | |
| 818(i) | CD1 | 32.5.4 [atomics.order] | wording for memory ordering | Yes | | |
| 2034(i) | Resolved | 32.5.4 [atomics.order] | Initialization of atomics is misspecified so that it doesn't preserve sequential consistency | Yes | | |
| 926(i) | NAD Editorial | 32.5.4 [atomics.order] | Sequentially consistent fences, relaxed operations and modification order | Yes | | |
| 1458(i) | Dup | 32.5.4 [atomics.order] | Overlapping evaluations are allowed | Yes | | 1459 |
| 3249(i) | C++23 | 32.5.5 [atomics.lockfree] | There are no 'pointers' in §[atomics.lockfree] | Yes | 4 | |
| 1146(i) | Resolved | 32.5.5 [atomics.lockfree] | "lockfree" does not say enough | Yes | | |
| 1460(i) | Resolved | 32.5.5 [atomics.lockfree] | Missing lock-free property for typebool should be added | Yes | | |
| 3263(i) | New | 32.5.6 [atomics.wait] | Atomic waiting function calls should only be unblocked once | Yes | 3 | |
| 3288(i) | New | 32.5.6 [atomics.wait] | atomic<T>::notify_one is unimplementable | Yes | 2 | |
| 3160(i) | C++20 | 32.5.7 [atomics.ref.generic] | atomic_ref() = delete; should be deleted | Yes | 0 | |
| 3485(i) | NAD | 32.5.7 [atomics.ref.generic] | atomic_ref safety should be based on operations that "potentially conflict" rather than lifetime | Yes | 3 | |
| 3508(i) | Resolved | 32.5.7.1 [atomics.ref.generic.general] | atomic_ref<cv T> is not well-specified | Yes | 2 | |
| 4377(i) | Voting | 32.5.7.2 [atomics.ref.ops] | Misleading note about lock-free property ofstd::atomic_ref | Yes | | |
| 4244(i) | Tentatively NAD | 32.5.7.2 [atomics.ref.ops] | Whether the spuriously failed comparison applies tocompare_exchange_strong is unclear | No | | |
| 4453(i) | New | 32.5.7.2 [atomics.ref.ops] | atomic_ref<cv T>::required_alignment should be the same as forT | Yes | | |
| 3409(i) | New | 32.5.7.2 [atomics.ref.ops] | Too lax description ofatomic_ref<T>::required_alignment | Yes | 3 | |
| 4450(i) | Immediate | 32.5.7.3 [atomics.ref.int] | std::atomic_ref<T>::store_key should be disabled for constT | Yes | | |
| 3012(i) | C++20 | 32.5.8 [atomics.types.generic] | atomic<T> is unimplementable for non-is_trivially_copy_constructible T | Yes | 2 | |
| 2441(i) | C++17 | 32.5.8 [atomics.types.generic] | Exact-width atomic typedefs should be provided | Yes | 0 | |
| 768(i) | CD1 | 32.5.8 [atomics.types.generic] | Typos in [atomics]? | Yes | | |
| 845(i) | CD1 | 32.5.8 [atomics.types.generic] | atomics cannot support aggregate initialization | Yes | | |
| 4069(i) | Resolved | 32.5.8 [atomics.types.generic] | std::atomic<volatile T> should be ill-formed | Yes | 2 | |
| 908(i) | Resolved | 32.5.8 [atomics.types.generic] | Deleted assignment operators for atomic types must be volatile | Yes | | |
| 2715(i) | Resolved | 32.5.8 [atomics.types.generic] | What is 'aggregate initialization syntax'? | Yes | 3 | |
| 2424(i) | Resolved | 32.5.8 [atomics.types.generic] | 29.5 should state that atomic types are not trivially copyable | Yes | 2 | |
| 944(i) | Resolved | 32.5.8 [atomics.types.generic] | atomic<bool> derive fromatomic_bool? | Yes | | |
| 1469(i) | Resolved | 32.5.8 [atomics.types.generic] | atomic<T*> inheritance fromatomic_address breaks type safety | Yes | | |
| 2024(i) | Resolved | 32.5.8 [atomics.types.generic] | Inconsistent implementation requirements foratomic<integral> andatomic<T*> | Yes | | |
| 2165(i) | Resolved | 32.5.8 [atomics.types.generic] | std::atomic<X> requiresX to be nothrow default constructible | Yes | 4 | |
| 3949(i) | WP | 32.5.8.1 [atomics.types.generic.general] | std::atomic<bool>'s trivial destructor dropped in C++17 spec wording | Yes | | |
| 4321(i) | Tentatively NAD | 32.5.8.2 [atomics.types.operations] | How are evaluations occurring within a store and a load operation ordered where the store synchronized with the load | No | | |
| 3417(i) | Open | 32.5.8.2 [atomics.types.operations] | Missingvolatile atomic deprecations | Yes | 3 | |
| 4169(i) | WP | 32.5.8.2 [atomics.types.operations] | std::atomic<T>'s default constructor should be constrained | Yes | | |
| 2426(i) | C++17 | 32.5.8.2 [atomics.types.operations] | Issue aboutcompare_exchange | Yes | 1 | |
| 1474(i) | C++11 | 32.5.8.2 [atomics.types.operations] | weak compare-and-exchange confusion | Yes | | 1470,1475,1476,1477 |
| 1478(i) | C++11 | 32.5.8.2 [atomics.types.operations] | Clarify race conditions in atomics initialization | Yes | | |
| 777(i) | CD1 | 32.5.8.2 [atomics.types.operations] | Atomics Library Issue | Yes | | |
| 846(i) | CD1 | 32.5.8.2 [atomics.types.operations] | No definition for constructor | Yes | | |
| 2334(i) | Resolved | 32.5.8.2 [atomics.types.operations] | atomic's default constructor requires "uninitialized" state even for types with non-trivial default-constructor | Yes | | |
| 1043(i) | Resolved | 32.5.8.2 [atomics.types.operations] | Clarify thatcompare_exchange is not a read-modify-write operation | Yes | | |
| 1147(i) | Resolved | 32.5.8.2 [atomics.types.operations] | Non-volatile atomic functions | Yes | | |
| 864(i) | NAD Editorial | 32.5.8.2 [atomics.types.operations] | Defect in atomic wording | Yes | | |
| 1471(i) | NAD Editorial | 32.5.8.2 [atomics.types.operations] | Default constructor of atomics needs specification | Yes | | |
| 1472(i) | NAD Editorial | 32.5.8.2 [atomics.types.operations] | Incorrect semantics ofatomic_init | Yes | | |
| 3611(i) | NAD | 32.5.8.2 [atomics.types.operations] | Shouldcompare_exchange be allowed to modify theexpected value on success? | Yes | 2 | |
| 1473(i) | NAD | 32.5.8.2 [atomics.types.operations] | Incomplete memory order specifications | Yes | | |
| 1470(i) | Dup | 32.5.8.2 [atomics.types.operations] | "Same-ness" curiosities | Yes | | 1474 |
| 1475(i) | Dup | 32.5.8.2 [atomics.types.operations] | weak compare-and-exchange confusion II | Yes | | 1474 |
| 1476(i) | Dup | 32.5.8.2 [atomics.types.operations] | Meaningless specification of spurious failure | Yes | | 1474 |
| 1477(i) | Dup | 32.5.8.2 [atomics.types.operations] | weak compare-and-exchange confusion III | Yes | | 1474 |
| 3047(i) | New | 32.5.8.3 [atomics.types.int] | atomic compound assignment operators can cause undefined behavior when correspondingfetch_meow members don't | Yes | 3 | |
| 3045(i) | C++20 | 32.5.8.4 [atomics.types.float] | atomic<floating-point> doesn't havevalue_type ordifference_type | Yes | 0 | |
| 4194(i) | Tentatively NAD | 32.5.8.5 [atomics.types.pointer] | atomic<void*> should use generic class template | Yes | | |
| 3906(i) | New | 32.5.8.5 [atomics.types.pointer] | "Undefined address" is undefined | No | 3 | |
| 3893(i) | WP | 32.5.8.7.2 [util.smartptr.atomic.shared] | LWG 3661 brokeatomic<shared_ptr<T>> a; a = nullptr; | Yes | | |
| 3661(i) | C++23 | 32.5.8.7.2 [util.smartptr.atomic.shared] | constinit atomic<shared_ptr<T>> a(nullptr); should work | Yes | | |
| 3418(i) | New | 32.5.9 [atomics.nonmembers] | Deprecated free functions in<atomic> | Yes | 3 | |
| 3659(i) | C++23 | 32.5.10 [atomics.flag] | ConsiderATOMIC_FLAG_INIT undeprecation | Yes | 3 | |
| 2138(i) | C++14 | 32.5.10 [atomics.flag] | atomic_flag::clear should not acceptmemory_order_consume | Yes | | |
| 2159(i) | C++14 | 32.5.10 [atomics.flag] | atomic_flag initialization | Yes | | |
| 1479(i) | C++11 | 32.5.11 [atomics.fences] | Fence functions should beextern "C" | Yes | | |
| 1480(i) | C++11 | 32.5.11 [atomics.fences] | Atomic fences don't havesynchronizes with relation | Yes | | |
| 3671(i) | C++23 | 32.5.12 [stdatomic.h.syn] | atomic_fetch_xor missing fromstdatomic.h | Yes | | |
| 1488(i) | LEWG | 32.6 [thread.mutex] | Improve interoperability between the C++0x and C1x threads APIs | No | 4 | |
| 1044(i) | C++11 | 32.6 [thread.mutex] | Empty tag types should beconstexpr literals | Yes | | |
| 1268(i) | Resolved | 32.6 [thread.mutex] | The Mutex requirements in 30.4.1 and 30.4.2 are wrong | Yes | | |
| 1489(i) | NAD Editorial | 32.6 [thread.mutex] | unlock functions and unlock mutex requirements are inconsistent | Yes | | |
| 936(i) | LEWG | 32.6.4 [thread.mutex.requirements] | Mutex type overspecified | No | 4 | 961 |
| 961(i) | LEWG | 32.6.4 [thread.mutex.requirements] | Various threading bugs #11 | No | 4 | 936 |
| 1493(i) | LEWG | 32.6.4 [thread.mutex.requirements] | Addmutex,recursive_mutex,is_locked function | No | 4 | |
| 2126(i) | Pending NAD Editorial | 32.6.4 [thread.mutex.requirements] | Several specification problems in regard to mutex requirements | Yes | | |
| 960(i) | C++11 | 32.6.4 [thread.mutex.requirements] | Various threading bugs #10 | Yes | | |
| 968(i) | C++11 | 32.6.4 [thread.mutex.requirements] | Various threading bugs #18 | Yes | | |
| 1218(i) | C++11 | 32.6.4 [thread.mutex.requirements] | mutex destructor synchronization | Yes | | |
| 1490(i) | Resolved | 32.6.4 [thread.mutex.requirements] | Mutex requirements too stringent | Yes | | |
| 1491(i) | Resolved | 32.6.4 [thread.mutex.requirements] | try_lock does not guarantee forward progress | Yes | | |
| 1492(i) | Resolved | 32.6.4 [thread.mutex.requirements] | Mutex requirements should not be bound to threads | Yes | | |
| 980(i) | NAD | 32.6.4 [thread.mutex.requirements] | mutex lock() missing error conditions | Yes | | |
| 2134(i) | Pending NAD Editorial | 32.6.4.2 [thread.mutex.requirements.mutex] | Redundant Mutex requirement? | Yes | | |
| 2309(i) | C++17 | 32.6.4.2 [thread.mutex.requirements.mutex] | mutex::lock() should not throwdevice_or_resource_busy | Yes | 0 | |
| 2090(i) | NAD | 32.6.4.2 [thread.mutex.requirements.mutex] | Minor Overconstraint in Mutex Types | Yes | | |
| 893(i) | C++11 | 32.6.4.2.2 [thread.mutex.class] | std::mutex issue | Yes | | 905 |
| 828(i) | Resolved | 32.6.4.2.2 [thread.mutex.class] | Static initialization forstd::mutex? | Yes | | |
| 905(i) | Dup | 32.6.4.2.2 [thread.mutex.class] | Mutex specification questions | Yes | | 893 |
| 2125(i) | Pending NAD Editorial | 32.6.4.3 [thread.timedmutex.requirements] | TimedMutex specification problem | Yes | | |
| 2091(i) | C++14 | 32.6.4.3 [thread.timedmutex.requirements] | Misplaced effect inm.try_lock_for() | Yes | | |
| 2288(i) | C++14 | 32.6.4.4 [thread.sharedmutex.requirements] | Inconsistent requirements for shared mutexes | Yes | | |
| 2363(i) | Resolved | 32.6.4.5.2 [thread.sharedtimedmutex.class] | Defect in 30.4.1.4.1 [thread.sharedtimedmutex.class] | Yes | 2 | |
| 2731(i) | C++23 | 32.6.5.2 [thread.lock.guard] | Existence oflock_guard<MutexTypes...>::mutex_type typedef unclear | Yes | 3 | |
| 2887(i) | Resolved | 32.6.5.2 [thread.lock.guard] | Revert the changes from P0156R0: variadiclock_guard | Yes | | |
| 2023(i) | Resolved | 32.6.5.2 [thread.lock.guard] | Incorrect requirements forlock_guard andunique_lock | Yes | | |
| 2104(i) | C++14 | 32.6.5.4 [thread.lock.unique] | unique_lock move-assignment should not benoexcept | Yes | | |
| 4172(i) | WP | 32.6.5.4.2 [thread.lock.unique.cons] | unique_lock self-move-assignment is broken | Yes | | |
| 2577(i) | C++17 | 32.6.5.4.2 [thread.lock.unique.cons] | {shared,unique}_lock should usestd::addressof | Yes | 0 | |
| 1045(i) | C++11 | 32.6.5.4.2 [thread.lock.unique.cons] | Remove unnecessary preconditions fromunique_lock constructor | Yes | | |
| 962(i) | C++11 | 32.6.5.4.3 [thread.lock.unique.locking] | Various threading bugs #12 | Yes | | |
| 1159(i) | C++11 | 32.6.5.4.3 [thread.lock.unique.locking] | Unclear spec forresource_deadlock_would_occur | Yes | | 1219 |
| 1219(i) | Dup | 32.6.5.4.3 [thread.lock.unique.locking] | unique_lock::lock and resource_deadlock_would_occur | Yes | | 1159 |
| 784(i) | NAD | 32.6.5.4.4 [thread.lock.unique.mod] | unique_lock::release | Yes | | |
| 3030(i) | C++20 | 32.6.6 [thread.lock.algorithm] | Who shall meet the requirements oftry_lock? | Yes | 0 | |
| 986(i) | C++11 | 32.6.6 [thread.lock.algorithm] | Generictry_lock contradiction | Yes | | |
| 2080(i) | C++14 | 32.6.7 [thread.once] | Specify whenonce_flag becomes invalid | Yes | | |
| 2442(i) | C++17 | 32.6.7.2 [thread.once.callonce] | call_once() shouldn'tDECAY_COPY() | Yes | | |
| 1494(i) | C++11 | 32.6.7.2 [thread.once.callonce] | Term "are serialized" not defined | Yes | | |
| 2140(i) | C++14 | 32.7 [thread.condition] | Meaning ofnotify_all_at_thread_exit synchronization requirement? | Yes | | |
| 2190(i) | C++14 | 32.7 [thread.condition] | Condition variable specification | Yes | | |
| 859(i) | C++11 | 32.7 [thread.condition] | Monotonic Clock is Conditionally Supported? | Yes | | |
| 1220(i) | C++11 | 32.7 [thread.condition] | What doescondition_variable wait on? | Yes | | |
| 1222(i) | C++11 | 32.7 [thread.condition] | condition_variable incorrect effects for exception safety | Yes | | |
| 1497(i) | C++11 | 32.7 [thread.condition] | lock() postcondition can not be generally achieved | Yes | | |
| 1498(i) | Resolved | 32.7 [thread.condition] | Unclear specification for [thread.condition] | Yes | | |
| 1495(i) | NAD Editorial | 32.7 [thread.condition] | Condition variablewait_for return value insufficient | Yes | | |
| 1499(i) | NAD | 32.7 [thread.condition] | Condition variables preclude wakeup optimization | Yes | | |
| 3343(i) | Immediate | 32.7.3 [thread.condition.nonmember] | Ordering of calls tounlock() andnotify_all() inEffects element ofnotify_all_at_thread_exit() should be reversed | Yes | 3 | |
| 4301(i) | Voting | 32.7.4 [thread.condition.condvar] | condition_variable{_any}::wait_{for, until} should take timeout by value | Yes | | |
| 3504(i) | New | 32.7.4 [thread.condition.condvar] | condition_variable::wait_for is overspecified | Yes | 3 | |
| 2093(i) | C++14 | 32.7.4 [thread.condition.condvar] | Throws clause ofcondition_variable::wait with predicate | Yes | | |
| 2135(i) | C++14 | 32.7.4 [thread.condition.condvar] | Unclear requirement for exceptions thrown incondition_variable::wait() | Yes | | |
| 857(i) | C++11 | 32.7.4 [thread.condition.condvar] | condition_variable::time_wait returnbool error prone | Yes | | |
| 965(i) | C++11 | 32.7.4 [thread.condition.condvar] | Various threading bugs #15 | Yes | | |
| 1221(i) | C++11 | 32.7.4 [thread.condition.condvar] | condition_variable wording | Yes | | |
| 958(i) | Resolved | 32.7.4 [thread.condition.condvar] | Various threading bugs #8 | Yes | | |
| 966(i) | Resolved | 32.7.4 [thread.condition.condvar] | Various threading bugs #16 | Yes | | |
| 2240(i) | Resolved | 32.7.4 [thread.condition.condvar] | Probable misuse of term "function scope" in [thread.condition] | Yes | | |
| 1496(i) | NAD Editorial | 32.7.4 [thread.condition.condvar] | condition_variable not implementable | Yes | | |
| 887(i) | NAD | 32.7.4 [thread.condition.condvar] | issue with condition::wait_... | Yes | | |
| 959(i) | NAD | 32.7.4 [thread.condition.condvar] | Various threading bugs #9 | Yes | | |
| 3425(i) | C++23 | 32.7.5 [thread.condition.condvarany] | condition_variable_any fails to constrain itsLock parameters | Yes | 0 | |
| 2092(i) | C++14 | 32.7.5 [thread.condition.condvarany] | Vague Wording forcondition_variable_any | Yes | | |
| 1267(i) | C++11 | 32.7.5 [thread.condition.condvarany] | Incorrect wording forcondition_variable_any::wait_for | Yes | | |
| 964(i) | Resolved | 32.7.5 [thread.condition.condvarany] | Various threading bugs #14 | Yes | | |
| 1500(i) | NAD Editorial | 32.7.5 [thread.condition.condvarany] | Consider removal ofnative_handle() | Yes | | |
| 1223(i) | NAD | 32.7.5 [thread.condition.condvarany] | condition_variable_any lock matching? | Yes | | |
| 1224(i) | NAD | 32.7.5 [thread.condition.condvarany] | condition_variable_any support for recursive mutexes? | Yes | | |
| 3898(i) | New | 32.9.3.3 [thread.barrier.class] | Possibly unintended preconditions for completion functions ofstd::barrier | Yes | 3 | |
| 2276(i) | C++17 | 32.10 [futures] | Missing requirement onstd::promise::set_exception | Yes | | |
| 1518(i) | C++11 | 32.10 [futures] | Waiting for deferred functions | Yes | | |
| 1046(i) | Resolved | 32.10 [futures] | Provide simple facility to start asynchronous operations | Yes | | |
| 1244(i) | Resolved | 32.10 [futures] | wait_*() in*future for synchronous functions | Yes | | |
| 1275(i) | Resolved | 32.10 [futures] | Creating and setting futures | Yes | | |
| 1501(i) | Resolved | 32.10 [futures] | Specification for managing associated asynchronous state has problems | Yes | | |
| 1513(i) | Resolved | 32.10 [futures] | 'launch' enum too restrictive | Yes | | |
| 2056(i) | C++14 | 32.10.1 [futures.overview] | future_errc enums start with value 0 (invalid value forbroken_promise) | Yes | | |
| 2102(i) | C++14 | 32.10.1 [futures.overview] | Why isstd::launch an implementation-defined type? | Yes | | |
| 1226(i) | Resolved | 32.10.3 [futures.errors] | Incomplete changes of #890 | Yes | | |
| 1160(i) | Resolved | 32.10.4 [futures.future.error] | future_error public constructor is 'exposition only' | Yes | | |
| 2530(i) | Open | 32.10.5 [futures.state] | Clarify observable side effects of releasing a shared state | No | 3 | |
| 1269(i) | Resolved | 32.10.5 [futures.state] | Associated state doesn't account forasync | Yes | | |
| 1502(i) | Resolved | 32.10.5 [futures.state] | Specification of [futures.state] unclear | Yes | | |
| 1503(i) | NAD Editorial | 32.10.5 [futures.state] | "associated asynchronous state" must go | Yes | | |
| 2532(i) | Open | 32.10.6 [futures.promise] | Satisfying apromise at thread exit | Yes | 3 | |
| 3466(i) | C++23 | 32.10.6 [futures.promise] | Specify the requirements forpromise/future/shared_future consistently | Yes | 3 | |
| 2412(i) | C++20 | 32.10.6 [futures.promise] | promise::set_value() andpromise::get_future() should not race | Yes | 3 | |
| 2523(i) | C++17 | 32.10.6 [futures.promise] | std::promise synopsis shows twoset_value_at_thread_exit()'s for no apparent reason | Yes | 0 | |
| 2098(i) | C++14 | 32.10.6 [futures.promise] | Minor Inconsistency betweenpromise::set_value andpromise::set_value_at_thread_exit | Yes | | |
| 2095(i) | Resolved | 32.10.6 [futures.promise] | promise andpackaged_task missing constructors needed for uses-allocator construction | Yes | 4 | |
| 3003(i) | Resolved | 32.10.6 [futures.promise] | <future> still has type-erased allocators inpromise | Yes | 2 | |
| 1049(i) | Resolved | 32.10.6 [futures.promise] | Move assignment ofpromise inverted | Yes | | |
| 1050(i) | Resolved | 32.10.6 [futures.promise] | Clarify postconditions forget_future() | Yes | | |
| 1088(i) | Resolved | 32.10.6 [futures.promise] | std::promise should provide non-memberswap overload | Yes | | |
| 1165(i) | Resolved | 32.10.6 [futures.promise] | Unneededpromise move constructor | Yes | | |
| 1272(i) | Resolved | 32.10.6 [futures.promise] | confusing declarations ofpromise::set_value | Yes | | |
| 1291(i) | Resolved | 32.10.6 [futures.promise] | Exceptions thrown duringpromise::set_value | Yes | | |
| 1300(i) | Resolved | 32.10.6 [futures.promise] | Circular definition ofpromise::swap | Yes | | |
| 1504(i) | Resolved | 32.10.6 [futures.promise] | Term "are serialized" is not defined | Yes | | |
| 1505(i) | Resolved | 32.10.6 [futures.promise] | Synchronization betweenpromise::set_value andfuture::get | Yes | | |
| 1507(i) | Resolved | 32.10.6 [futures.promise] | promise::XXX_at_thread_exit functions have nosynchronization requirements | Yes | | |
| 1506(i) | NAD Editorial | 32.10.6 [futures.promise] | set_exception with a null pointer | Yes | | |
| 1164(i) | NAD | 32.10.6 [futures.promise] | promise::swap should pass by rvalue reference | Yes | | |
| 3795(i) | C++23 | 32.10.7 [futures.unique.future] | Self-move-assignment ofstd::future andstd::shared_future have unimplementable postconditions | Yes | 3 | |
| 2531(i) | C++17 | 32.10.7 [futures.unique.future] | future::get should explicitly state that the shared state is released | Yes | 3 | |
| 2556(i) | C++17 | 32.10.7 [futures.unique.future] | Wide contract forfuture::share() | Yes | 3 | |
| 2096(i) | C++14 | 32.10.7 [futures.unique.future] | Incorrect constraints offuture::get in regard toMoveAssignable | Yes | | |
| 2185(i) | C++14 | 32.10.7 [futures.unique.future] | Missing throws clause forfuture/shared_future::wait_for/wait_until | Yes | | |
| 2031(i) | C++11 | 32.10.7 [futures.unique.future] | std::future<>::share() only applies to rvalues | Yes | | |
| 1047(i) | Resolved | 32.10.7 [futures.unique.future] | Ensure that future'sget() blocks when not ready | Yes | | |
| 1048(i) | Resolved | 32.10.7 [futures.unique.future] | Provide empty-state inspection forstd::unique_future | Yes | | |
| 1161(i) | Resolved | 32.10.7 [futures.unique.future] | Unnecessaryunique_future limitations | Yes | | |
| 1273(i) | Resolved | 32.10.7 [futures.unique.future] | future::valid should be callable on an invalid future | Yes | | |
| 3458(i) | Resolved | 32.10.7 [futures.unique.future] | Isshared_future intended to work with arrays or function types? | Yes | 0 | |
| 1106(i) | Resolved | 32.10.8 [futures.shared.future] | Multiple exceptions from connectedshared_future::get()? | Yes | | |
| 1162(i) | Resolved | 32.10.8 [futures.shared.future] | shared_future should support an efficient move constructor | Yes | | |
| 1163(i) | Resolved | 32.10.8 [futures.shared.future] | shared_future is inconsistent withshared_ptr | Yes | | |
| 1266(i) | Resolved | 32.10.8 [futures.shared.future] | shared_future::get and deferredasync functions | Yes | | |
| 1304(i) | Resolved | 32.10.8 [futures.shared.future] | Missing preconditions forshared_future | Yes | | |
| 2799(i) | Resolved | 32.10.8 [futures.shared.future] | noexcept-specifications inshared_future | Yes | 2 | |
| 2920(i) | Resolved | 32.10.8 [futures.shared.future] | Add a deduction guide for creating ashared_future from afuture rvalue | Yes | | |
| 1107(i) | NAD Editorial | 32.10.8 [futures.shared.future] | constructorshared_future(unique_future) by value? | Yes | | |
| 2046(i) | NAD | 32.10.8 [futures.shared.future] | shared_future(future<R>&&) should be allowed to throw | Yes | | |
| 3582(i) | New | 32.10.9 [futures.async] | Unclear wherestd::async exceptions are handled | Yes | 3 | |
| 2202(i) | Deferred | 32.10.9 [futures.async] | Missing allocator support byasync | No | 4 | |
| 2752(i) | C++17 | 32.10.9 [futures.async] | "Throws:" clauses ofasync andpackaged_task are unimplementable | Yes | 3 | |
| 2186(i) | C++14 | 32.10.9 [futures.async] | Incomplete action onasync/launch::deferred | Yes | | |
| 2078(i) | C++14 | 32.10.9 [futures.async] | Throw specification ofasync() incomplete | Yes | | |
| 2100(i) | C++14 | 32.10.9 [futures.async] | timed waiting functions cannot timeout iflaunch::async policy used | Yes | | |
| 2120(i) | C++14 | 32.10.9 [futures.async] | What shouldasync do if neither 'async' nor 'deferred' is set in policy? | Yes | | |
| 2032(i) | C++11 | 32.10.9 [futures.async] | Incorrect synchronization clause ofasync function | Yes | | |
| 2856(i) | Resolved | 32.10.9 [futures.async] | std::async should be marked as[[nodiscard]] | Yes | 2 | |
| 1315(i) | NAD Editorial | 32.10.9 [futures.async] | return type ofasync | Yes | | |
| 1512(i) | NAD Editorial | 32.10.9 [futures.async] | Conflict in specification: block or join? | Yes | | |
| 3117(i) | C++23 | 32.10.10 [futures.task] | Missingpackaged_task deduction guides | Yes | 3 | |
| 2976(i) | C++20 | 32.10.10 [futures.task] | Danglinguses_allocator specialization forpackaged_task | Yes | 3 | |
| 2921(i) | C++17 | 32.10.10 [futures.task] | packaged_task and type-erased allocators | Yes | | |
| 2067(i) | C++14 | 32.10.10 [futures.task] | packaged_task should have deleted copy c'tor with const parameter | Yes | | |
| 2030(i) | C++11 | 32.10.10 [futures.task] | packaged_task::result_type should be removed | Yes | | |
| 1090(i) | Resolved | 32.10.10 [futures.task] | Missing description ofpackaged_task memberswap, missing non-memberswap | Yes | | |
| 1508(i) | Resolved | 32.10.10 [futures.task] | Renamepackaged_task::operator bool() | Yes | | |
| 4160(i) | New | 32.10.10.1 [futures.task.general] | packaged_task should reject rvalue reference return types | Yes | 3 | |
| 4158(i) | New | 32.10.10.2 [futures.task.members] | packaged_task::operator= should abandon its shared state | Yes | 3 | |
| 4154(i) | WP | 32.10.10.2 [futures.task.members] | The Mandates forstd::packaged_task's constructor from a callable entity should consider decaying | Yes | 3 | |
| 2407(i) | C++17 | 32.10.10.2 [futures.task.members] | packaged_task(allocator_arg_t, const Allocator&, F&&) should neither be constrained norexplicit | Yes | | |
| 2097(i) | C++14 | 32.10.10.2 [futures.task.members] | packaged_task constructors should be constrained | Yes | | |
| 2142(i) | C++14 | 32.10.10.2 [futures.task.members] | packaged_task::operator() synchronization too broad? | Yes | | |
| 1514(i) | C++11 | 32.10.10.2 [futures.task.members] | packaged_task constructors need review | Yes | | |
| 2008(i) | C++11 | 32.10.10.2 [futures.task.members] | Conflicting Error Conditions forpackaged_task::operator() | Yes | | |
| 2027(i) | C++11 | 32.10.10.2 [futures.task.members] | Initialization of the stored task of apackaged_task | Yes | | |
| 2245(i) | Resolved | 32.10.10.2 [futures.task.members] | packaged_task::reset() memory allocation | Yes | 3 | |
| 1515(i) | Resolved | 32.10.10.2 [futures.task.members] | packaged_task::make_ready_at_thread_exit has no synchronization requirements | Yes | | |
| 2025(i) | Resolved | 32.10.10.2 [futures.task.members] | Incorrect semantics of move assignment operator ofpackaged_task | Yes | | |
| 2000(i) | C++11 | 32.10.10.3 [futures.task.nonmembers] | Missing definition ofpackaged_task specialization ofuses_allocator | Yes | | |
| Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates |
|---|
| 927(i) | NAD Concepts | 99 [allocator.concepts] | Dereferenceable should beHasDereference | Yes | | |
| 1172(i) | Resolved | 99 [allocator.concepts.members] | select_on_container_(copy|move)_construction over-constrained | Yes | | |
| 1074(i) | NAD Concepts | 99 [allocator.element.concepts] | concept map broken by N2840 | Yes | | |
| 1166(i) | Resolved | 99 [allocator.propagation] | Allocator-specific move/copy break model of move-constructor and move-assignment | Yes | | |
| 943(i) | C++11 | 99 [atomics.types.address] | ssize_t undefined | Yes | | |
| 1465(i) | Resolved | 99 [atomics.types.address] | Missing arithmetic operators foratomic_address | Yes | | |
| 1466(i) | Resolved | 99 [atomics.types.address] | Silentconst breakage bycompare_exchange_* member functions | Yes | | |
| 1467(i) | Resolved | 99 [atomics.types.address] | Derivingatomic<T*> fromatomic_address breaks type safety | Yes | | |
| 1468(i) | Resolved | 99 [atomics.types.address] | atomic_address::compare_exchange_* member functions should matchatomic_compare_exchange_* free functions | Yes | | |
| 1462(i) | Resolved | 99 [atomics.types.integral] | Ambiguous value assignment toatomic_bool | Yes | | 1463 |
| 1464(i) | Resolved | 99 [atomics.types.integral] | Underspecified typedefs for atomic integral types | Yes | | |
| 1463(i) | Dup | 99 [atomics.types.integral] | Inconsistent value assignment foratomic_bool | Yes | | 1462 |
| 1247(i) | C++11 | 99 [auto.ptr] | auto_ptr is overspecified | Yes | | |
| 127(i) | TC1 | 99 [auto.ptr] | auto_ptr<> conversion issues | Yes | | |
| 973(i) | NAD Editorial | 99 [auto.ptr] | auto_ptr characteristics | Yes | | |
| 249(i) | NAD | 99 [auto.ptr] | Return Type ofauto_ptr::operator= | Yes | | |
| 463(i) | NAD | 99 [auto.ptr] | auto_ptr usability issues | Yes | | |
| 2505(i) | Resolved | 99 [auto.ptr.conv] | auto_ptr_ref creation requirements underspecified | Yes | 4 | |
| 2(i) | NAD | 99 [auto.ptr.conv] | Auto_ptr conversions effects incorrect | Yes | | |
| 1080(i) | NAD Concepts | 99 [concept.arithmetic] | Concept ArithmeticLike should provide explicit boolean conversion | Yes | | |
| 988(i) | NAD | 99 [concept.comparison] | Reflexivity meaningless? | Yes | | |
| 1016(i) | NAD Concepts | 99 [concept.comparison] | ProvideLessThanComparable andEqualityComparable forFloatingPointType | Yes | | |
| 1017(i) | NAD Concepts | 99 [concept.regular] | Floating-point types should not satisfyRegular | Yes | | |
| 1015(i) | NAD Concepts | 99 [concept.transform] | C++ programs - but not users - need to provide supportconcept_maps | Yes | | |
| 1124(i) | NAD Concepts | 99 [concept.transform] | Invalid definition of concept RvalueOf | Yes | | |
| 3395(i) | C++20 | 99 [defns.comparison] | Definition for three-way comparison needs to be updated (US 152) | Yes | 1 | |
| 1355(i) | Resolved | 99 [defns.move.assign.op] | The definition of move-assignment operator is redundant | Yes | | |
| 1356(i) | Resolved | 99 [defns.move.ctor] | The definition of move-constructor is redundant | Yes | | |
| 2890(i) | C++17 | 99 [defns.obj.state] | The definition of 'object state' applies only to class types | Yes | | |
| 1064(i) | NAD | 99 [defns.obj.state] | Term "object state" should not refer to classes | Yes | | |
| 1516(i) | C++11 | 99 [depr.auto.ptr] | No specification for which header containsauto_ptr | Yes | | |
| 1279(i) | C++11 | 99 [depr.base] | forbid[u|bi]nary_function specialization | Yes | | |
| 257(i) | NAD | 99 [depr.base] | STL functional object and iterator inheritance. | Yes | | |
| 480(i) | NAD | 99 [depr.base] | unary_function and binary_function should have protected nonvirtual destructors | Yes | | |
| 501(i) | NAD | 99 [depr.base] | Proposal: strengthen guarantees of lib.comparisons | Yes | | |
| 2479(i) | New | 99 [depr.conversions.buffer] | Unclear howwbuffer_convert usescvtstate | No | 4 | |
| 2480(i) | New | 99 [depr.conversions.buffer] | Error handling ofwbuffer_convert unclear | No | 4 | |
| 1252(i) | C++11 | 99 [depr.conversions.buffer] | wbuffer_convert::state_type inconsistency | Yes | | |
| 2478(i) | New | 99 [depr.conversions.string] | Unclear howwstring_convert usescvtstate | No | 4 | |
| 2481(i) | New | 99 [depr.conversions.string] | wstring_convert should be more precise regarding "byte-error string" etc. | No | 4 | |
| 2175(i) | C++14 | 99 [depr.conversions.string] | wstring_convert andwbuffer_convert validity | Yes | | |
| 2176(i) | C++14 | 99 [depr.conversions.string] | Special members forwstring_convert andwbuffer_convert | Yes | | |
| 2174(i) | C++14 | 99 [depr.conversions.string] | wstring_convert::converted() should benoexcept | Yes | | |
| 991(i) | C++11 | 99 [depr.conversions.string] | Provide allocator forwstring_convert | Yes | | |
| 2226(i) | NAD | 99 [depr.conversions.string] | wstring_convert methods do not take allocator instance | Yes | | |
| 2854(i) | NAD | 99 [depr.conversions.string] | wstring_convert provides no indication of incomplete input or output | Yes | 3 | |
| 721(i) | NAD | 99 [depr.conversions.string] | wstring_convert inconsistensies | Yes | | |
| 174(i) | TC1 | 99 [depr.ios.members] | Typo:OFF_T vs.POS_T | Yes | | |
| 175(i) | TC1 | 99 [depr.ios.members] | Ambiguity forbasic_streambuf::pubseekpos() and a few other functions. | Yes | | |
| 176(i) | TC1 | 99 [depr.ios.members] | exceptions() inios_base...? | Yes | | |
| 587(i) | NAD Editorial | 99 [depr.istrstream.cons] | iststream ctor missing description | Yes | | |
| 109(i) | CD1 | 99 [depr.lib.binders] | Missing binders for non-const sequence elements | Yes | | |
| 362(i) | CD1 | 99 [depr.lib.binders] | bind1st/bind2nd type safety | Yes | | |
| 798(i) | CD1 | 99 [depr.lib.binders] | Refactoring of binders lead to interface breakage | Yes | | |
| 2507(i) | New | 99 [depr.locale.stdcvt] | codecvt_mode should be a bitmask type | No | 3 | |
| 2229(i) | C++14 | 99 [depr.locale.stdcvt] | Standard code conversion facets underspecified | Yes | | |
| 2869(i) | Resolved | 99 [depr.locale.stdcvt] | Deprecate sub-clause [locale.stdcvt] | Yes | | |
| 2896(i) | Dup | 99 [depr.locale.stdcvt] | The contents of<codecvt> are underspecified | Yes | | |
| 1076(i) | NAD Concepts | 99 [depr.negators] | unary/binary_negate need constraining and move support | Yes | | |
| 2127(i) | C++17 | 99 [depr.storage.iterator] | Move-construction withraw_storage_iterator | Yes | 3 | |
| 2454(i) | C++17 | 99 [depr.storage.iterator] | Addraw_storage_iterator::base() member | Yes | 0 | |
| 1028(i) | NAD Concepts | 99 [depr.storage.iterator] | raw_storage_iterator needs to be a concept-constrained template | Yes | | |
| 46(i) | TC1 | 99 [depr.str.strstreams] | Minor Annex D errors | Yes | | |
| 115(i) | TC1 | 99 [depr.strstream.cons] | Typo in strstream constructors | Yes | | |
| 3128(i) | C++20 | 99 [depr.strstream.oper] | strstream::rdbuf needs aconst_cast | Yes | 0 | |
| 3109(i) | New | 99 [depr.strstreambuf] | strstreambuf is copyable | No | 4 | |
| 3095(i) | New | 99 [depr.strstreambuf.virtuals] | strstreambuf refers to nonexistent member offpos,fpos::offset | Yes | 4 | |
| 66(i) | TC1 | 99 [depr.strstreambuf.virtuals] | Strstreambuf::setbuf | Yes | | |
| 65(i) | NAD | 99 [depr.strstreambuf.virtuals] | Underspecification of strstreambuf::seekoff | Yes | | |
| 267(i) | NAD | 99 [depr.strstreambuf.virtuals] | interaction of strstreambuf::overflow() and seekoff() | Yes | | |
| 2072(i) | C++17 | 99 [depr.temporary.buffer] | Unclear wording about capacity of temporary buffers | Yes | 3 | |
| 425(i) | CD1 | 99 [depr.temporary.buffer] | return value of std::get_temporary_buffer | Yes | | |
| 1368(i) | C++11 | 99 [depr.uncaught] | Thread safety ofstd::uncaught_exception() | Yes | | |
| 2980(i) | C++20 | 99 [depr.util.smartptr.shared.atomic] | Cannotcompare_exchange empty pointers | Yes | | |
| 2172(i) | C++14 | 99 [depr.util.smartptr.shared.atomic] | Doesatomic_compare_exchange_* acceptv == nullptr arguments? | Yes | | |
| 1030(i) | C++11 | 99 [depr.util.smartptr.shared.atomic] | Missing requirements for smart-pointer safety API | Yes | | |
| 2445(i) | Resolved | 99 [depr.util.smartptr.shared.atomic] | "Stronger" memory ordering | Yes | | |
| 1367(i) | C++11 | 99 [exception.unexpected] | Deprecate library support for checking dynamic exception specifications | Yes | | |
| 4206(i) | New | 99 [exec.syn] | Alias templateconnect_result_t should be constrained withsender_to | Yes | 1 | |
| 40(i) | TC1 | 99 [facets.examples] | Meaningless normative paragraph in examples | Yes | | |
| 148(i) | TC1 | 99 [facets.examples] | Functions in the example facet BoolNames should be const | Yes | | |
| 217(i) | TC1 | 99 [facets.examples] | Facets example (Classifying Japanese characters) contains errors | Yes | | |
| 2670(i) | C++17 | 99 [fs.op.system_complete] | system_complete refers to undefined variable 'base' | Yes | 0 | |
| 2863(i) | Resolved | 99 [func.default.traits] | Undodefault_order changes of maps and sets | Yes | | |
| 843(i) | CD1 | 99 [func.referenceclosure.cons] | Reference Closure | Yes | | |
| 904(i) | C++11 | 99 [func.ret] | result_of argument types | Yes | | |
| 1270(i) | C++11 | 99 [func.ret] | result_of should be moved to<type_traits> | Yes | | |
| 1225(i) | Resolved | 99 [func.ret] | C++0xresult_of issue | Yes | | |
| 1274(i) | Resolved | 99 [futures.atomic_future] | atomic_future constructor | Yes | | |
| 1305(i) | Resolved | 99 [futures.atomic_future] | preconditions foratomic_future | Yes | | |
| 1509(i) | NAD Editorial | 99 [futures.atomic_future] | No restriction on callingfuture::get more than once | Yes | | |
| 1510(i) | NAD Editorial | 99 [futures.atomic_future] | Should be undefined behaviour to callatomic_future operations unlessvalid() | Yes | | |
| 1511(i) | NAD Editorial | 99 [futures.atomic_future] | Synchronize the move-constructor foratomic_future | Yes | | |
| 1063(i) | NAD Concepts | 99 [iterator.backward] | 03 iterator compatibilty | Yes | | |
| 1105(i) | NAD Concepts | 99 [iterator.concepts.range] | Shouldn'tRange be anauto concept | Yes | | |
| 2404(i) | C++17 | 99 [mismatch] | mismatch()'s complexity needs to be updated | Yes | 0 | |
| 3178(i) | Resolved | 99 [mismatch] | std::mismatch is missing an upper bound | Yes | 0 | |
| 1381(i) | C++11 | 99 [pair.range] | Replacepair's range support by proper range facility | Yes | | |
| 789(i) | CD1 | 99 [rand.adapt.xor] | xor_combine_engine(result_type) should be explicit | Yes | | |
| 790(i) | NAD | 99 [rand.adapt.xor] | xor_combine::seed not specified | Yes | | |
| 1149(i) | NAD Concepts | 99 [rand.concept.urng] | Reformulating NonemptyRange axiom | Yes | | |
| 732(i) | Resolved | 99 [rand.dist.samp.genpdf] | Defect in [rand.dist.samp.genpdf] | Yes | | 795 |
| 795(i) | Dup | 99 [rand.dist.samp.genpdf] | general_pdf_distribution should be dropped | Yes | | 732 |
| 3909(i) | Tentatively NAD | 99 [ranges.refinements] | Issues aboutviewable_range | Yes | | |
| 529(i) | NAD Editorial | 99 [res.on.required] | The standard encourages redundant and confusing preconditions | Yes | | |
| 3212(i) | Resolved | 99 [span.tuple] | tuple_element_t<1, const span<int, 42>> isconst int | Yes | 2 | |
| 3138(i) | NAD | 99 [support.contract.cviol] | There is no such thing asassertion-level | Yes | 2 | |
| 3139(i) | NAD | 99 [support.contract.cviol] | contract_violation's special member functions | Yes | 1 | |
| 990(i) | C++11 | 99 [time.clock.monotonic] | monotonic_clock::is_monotonic must betrue | Yes | | |
| 1409(i) | Resolved | 99 [time.clock.monotonic] | Specify whethermonotonic_clock is a distinct type or a typedef | Yes | | |
| 1410(i) | Resolved | 99 [time.clock.monotonic] | Add a feature-detect macro formonotonic_clock | Yes | | 1411 |
| 1412(i) | Resolved | 99 [time.clock.monotonic] | Make monotonic clocks mandatory | Yes | | |
| 1411(i) | Dup | 99 [time.clock.monotonic] | Add a compile-time flag to detectmonotonic_clock | Yes | | 1410 |
| 1387(i) | C++11 | 99 [tuple.range] | Range support bytuple should be removed | Yes | | |
| 433(i) | NAD | 99 [unexpected] | Contradiction in specification of unexpected() | Yes | | |
| 1098(i) | C++11 | 99 [util.dynamic.safety] | definition ofget_pointer_safety() | Yes | | |
| 1408(i) | C++11 | 99 [util.dynamic.safety] | Allow recycling of pointers afterundeclare_no_pointers | Yes | | |
| 858(i) | CD1 | 99 [util.dynamic.safety] | Wording for Minimal Support for Garbage Collection | Yes | | |
| 1022(i) | NAD Editorial | 99 [util.dynamic.safety] | Pointer-safety API has nothing to do with smart pointers | Yes | | |