Reference ISO/IEC IS 14882:2020(E)
This document is the Index by Section for the Library Active Issues List, Library Defect Reports and Accepted Issues, and Library Closed Issues List.
(view only non-Ready open issues)
Revised 2023-06-09 at 14:25:43 UTC
Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates |
571(i) | NAD Editorial | 2 [intro.refs] | Update C90 references to C99? | Yes | ||
653(i) | NAD | 2 [intro.refs] | Library reserved names | Yes |
(view only non-Ready open issues)
Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates |
2872(i) | C++17 | 3 [intro.defs] | Add definition for direct-non-list-initialization | Yes | ||
1354(i) | C++11 | 3.15 [defns.deadlock] | The definition of deadlock excludes cases involving a single thread | Yes | ||
2392(i) | New | 3.36 [defns.ntcts] | "character type" is used but not defined | No | 3 | |
3119(i) | C++20 | 3.42 [defns.prog.def.spec] | Program-definedness of closure types | Yes | 2 | |
3513(i) | New | 3.43 [defns.prog.def.type] | Fix definition of program-defined based on its uses | Yes | 3 |
(view only non-Ready open issues)
Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates |
3669(i) | New | 4.1.2 [intro.abstract] | std::filesystem operations should be observable behaviour | No | 3 |
(view only non-Ready open issues)
Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates |
873(i) | NAD Editorial | 6.8.2 [basic.fundamental] | signed integral type and unsigned integral type are not clearly defined | Yes | ||
2506(i) | SG1 | 6.9.2 [intro.multithread] | Underspecification of atomics | No | 3 | |
2075(i) | Resolved | 6.9.2 [intro.multithread] | Progress guarantees, lock-free property, and scheduling assumptions | Yes | ||
462(i) | NAD | 6.9.3.4 [basic.start.term] | Destroying objects with static storage duration | Yes |
(view only non-Ready open issues)
Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates |
3105(i) | New | 16 [library] | T1 is convertible to T2 | No | 3 | |
2949(i) | New | 16 [library] | Unclear complexity requirements: space vs. time | No | 4 | |
1195(i) | C++11 | 16 [library] | "Diagnostic required" wording is insufficient to prevent UB | Yes | ||
1349(i) | C++11 | 16 [library] | swap should not throw | Yes | ||
182(i) | CD1 | 16 [library] | Ambiguous references to size_t | Yes | ||
230(i) | CD1 | 16 [library] | Assignable specified without also specifying CopyConstructible | Yes | ||
336(i) | CD1 | 16 [library] | Clause 17 lack of references to deprecated headers | Yes | ||
2925(i) | Resolved | 16 [library] | Template argument deduction is not used in the standard library | Yes | ||
343(i) | Resolved | 16 [library] | Unspecified library header dependencies | Yes | ||
625(i) | Resolved | 16 [library] | Mixed up Effects and Returns clauses | Yes | 895 | |
1151(i) | Resolved | 16 [library] | Behavior of the library in the presence of threads is incompletely specified | Yes | ||
1344(i) | Resolved | 16 [library] | Replace throw() with noexcept | Yes | 1351 | |
1345(i) | Resolved | 16 [library] | Library classes should have noexcept move operations | Yes | ||
1346(i) | Resolved | 16 [library] | Apply noexcept where library specification does not permit exceptions | Yes | 1352 | |
1347(i) | Resolved | 16 [library] | Apply noexcept judiciously throughout the library | Yes | ||
1353(i) | Resolved | 16 [library] | Clarify the state of a moved-from object | Yes | ||
972(i) | NAD Editorial | 16 [library] | The term "Assignable" undefined but still in use | Yes | ||
1232(i) | NAD Editorial | 16 [library] | Still swap's with rvalue-references | Yes | ||
877(i) | NAD | 16 [library] | to throw() or to Throw: Nothing. | Yes | ||
2898(i) | NAD | 16 [library] | Prefer not to use member typedefs as constructor parameters | Yes | ||
2865(i) | NAD | 16 [library] | Resolve all open Library issues for C++17 | Yes | ||
1173(i) | NAD | 16 [library] | "Equivalence" wishy-washiness | Yes | 3 | |
385(i) | NAD | 16 [library] | Does call by value imply the CopyConstructible requirement? | Yes | ||
941(i) | NAD | 16 [library] | Ref-qualifiers for assignment operators | Yes | ||
996(i) | NAD | 16 [library] | Move operation not well specified | Yes | ||
1099(i) | NAD | 16 [library] | Various issues | Yes | ||
1153(i) | NAD | 16 [library] | Standard library needs review for constructors to be explicit to avoid treatment as initializer-list constructor | Yes | ||
1236(i) | NAD | 16 [library] | reserved identifiers in programs not using the library | Yes | ||
1331(i) | NAD | 16 [library] | incorporate move special member functions into library | Yes | ||
1348(i) | NAD | 16 [library] | Exception safety of unspecified types | Yes | ||
1350(i) | Dup | 16 [library] | Implicit contructors accidentally made some library types move-only | Yes | 1421 | |
1351(i) | Dup | 16 [library] | Replace dynamic exception specifications with noexcept | Yes | 1344 | |
1352(i) | Dup | 16 [library] | Apply noexcept where library specification says "Throws: Nothing" | Yes | 1346 | |
989(i) | NAD Concepts | 16 [library] | late_check and library | Yes | ||
1001(i) | NAD Concepts | 16 [library] | Pointers, concepts and headers | Yes | ||
1096(i) | NAD Concepts | 16 [library] | unconstrained rvalue ref parameters | Yes | ||
3538(i) | New | 16.2 [library.c] | §[library.c] C library functions are not addressable | No | 2 | |
2136(i) | Open | 16.3.2 [structure] | Postconditions vs. exceptions | No | 3 | |
424(i) | NAD Editorial | 16.3.2.2 [structure.summary] | normative notes | Yes | ||
3556(i) | New | 16.3.2.3 [structure.requirements] | Specification of when semantic constraints are imposed by use of concepts is unclear | No | 3 | |
995(i) | NAD | 16.3.2.3 [structure.requirements] | Operational Semantics Unclear | Yes | ||
3193(i) | New | 16.3.2.4 [structure.specifications] | Mandates: and Expects: elements are not defined for types | Yes | 3 | |
3401(i) | New | 16.3.2.4 [structure.specifications] | Is "as if by" equivalent to "equivalent to"? | No | 3 | |
2679(i) | C++17 | 16.3.2.4 [structure.specifications] | Inconsistent Use of Effects and Equivalent To | Yes | 3 | |
2710(i) | C++17 | 16.3.2.4 [structure.specifications] | "Effects: Equivalent to ..." doesn't count "Synchronization:" as determined semantics | Yes | 0 | |
997(i) | C++11 | 16.3.2.4 [structure.specifications] | "Effects: Equivalent to" is underspecified | Yes | ||
222(i) | TC1 | 16.3.2.4 [structure.specifications] | Are throw clauses necessary if a throw is already implied by the effects clause? | Yes | ||
3168(i) | Resolved | 16.3.2.4 [structure.specifications] | Expects: element should be specified in one place | Yes | 2 | |
2292(i) | Resolved | 16.3.2.4 [structure.specifications] | Find a better phrasing for "shall not participate in overload resolution" | Yes | 3 | |
626(i) | NAD Editorial | 16.3.2.4 [structure.specifications] | new Remark clauses not documented | Yes | ||
1179(i) | NAD Editorial | 16.3.2.4 [structure.specifications] | Probably editorial in [structure.specifications] | Yes | ||
492(i) | NAD | 16.3.2.4 [structure.specifications] | Invalid iterator arithmetic expressions | Yes | ||
663(i) | NAD | 16.3.2.4 [structure.specifications] | Complexity Requirements | Yes | ||
895(i) | Dup | 16.3.2.4 [structure.specifications] | "Requires:" on std::string::at et al | Yes | 625 | |
3818(i) | WP | 16.3.3 [conventions] | Exposition-only concepts are not described in library intro | Yes | ||
3724(i) | WP | 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 | ||
3092(i) | Open | 16.3.3.3.3 [bitmask.types] | Unclear semantics of enum class bitmask types | Yes | 3 | |
262(i) | CD1 | 16.3.3.3.3 [bitmask.types] | Bitmask operator ~ specified incorrectly | Yes | ||
1357(i) | Resolved | 16.3.3.3.3 [bitmask.types] | Library bitmask types to not satisfy the bimask type requirements | Yes | ||
2692(i) | NAD | 16.3.3.3.3 [bitmask.types] | Overspecification of lvalueness of bitmask elements | Yes | 3 | |
3620(i) | New | 16.3.3.3.4.1 [character.seq.general] | What are execution character sets and execution wide-character sets (after P2314R4)? | No | 3 | |
1060(i) | NAD Editorial | 16.3.3.3.4.2 [byte.strings] | Embedded nulls in NTBS | Yes | ||
3285(i) | C++20 | 16.3.3.3.5 [customization.point.object] | The type of a customization point object shall satisfy semiregular | Yes | 0 | |
3510(i) | Resolved | 16.3.3.3.5 [customization.point.object] | Customization point objects should be invocable as non-const too | Yes | 3 | |
3753(i) | WP | 16.3.3.6 [freestanding.item] | Clarify entity vs. freestanding entity | Yes | 2 | |
3815(i) | Resolved | 16.3.3.6 [freestanding.item] | Freestanding enumerators specification is lacking | Yes | ||
3690(i) | New | 16.4.2.2 [contents] | std::make_from_tuple etc. should find all tuple-like std::get overloads | Yes | 3 | |
2818(i) | WP | 16.4.2.2 [contents] | "::std::" everywhere rule needs tweaking | Yes | 2 | |
1065(i) | C++11 | 16.4.2.2 [contents] | Allow inline namespaces within namespace std for implementations | Yes | ||
229(i) | CD1 | 16.4.2.2 [contents] | Unqualified references of other library entities | Yes | ||
992(i) | NAD | 16.4.2.2 [contents] | Allow implementations to implement C library in the global namespace | Yes | ||
2380(i) | C++17 | 16.4.2.3 [headers] | May <cstdlib> provide long ::abs(long) and long long ::abs(long long)? | Yes | 2 | |
310(i) | CD1 | 16.4.2.3 [headers] | Is errno a macro? | Yes | ||
456(i) | CD1 | 16.4.2.3 [headers] | Traditional C header files are overspecified | Yes | ||
465(i) | CD1 | 16.4.2.3 [headers] | Contents of <ciso646> | Yes | ||
1002(i) | NAD | 16.4.2.3 [headers] | Provide bulk include headers | Yes | ||
3784(i) | WP | 16.4.2.4 [std.modules] | std.compat should not provide ::byte and its friends | Yes | ||
3871(i) | WP | 16.4.2.5 [compliance] | Adjust note about terminate | Yes | ||
3148(i) | C++20 | 16.4.2.5 [compliance] | <concepts> should be freestanding | Yes | 0 | |
1264(i) | C++11 | 16.4.2.5 [compliance] | quick_exit support for freestanding implementations | Yes | ||
1360(i) | C++11 | 16.4.2.5 [compliance] | Add <atomic> to free-standing implementations | Yes | ||
833(i) | NAD | 16.4.2.5 [compliance] | Freestanding implementations header list needs review for C++0x | Yes | ||
1003(i) | NAD | 16.4.2.5 [compliance] | Require more useful headers for freestanding implementations | Yes | ||
1358(i) | NAD | 16.4.2.5 [compliance] | Add <chrono> and <ratio> to freestanding implementations | Yes | ||
1359(i) | NAD | 16.4.2.5 [compliance] | Add <tuple> and <utility> to freestanding implementations | Yes | ||
1361(i) | NAD | 16.4.3 [using] | Does use of std::size_t in a header imply that typedef name is available to users? | Yes | ||
3240(i) | New | 16.4.3.2 [using.headers] | Headers declare more than entities | No | 3 | |
2428(i) | C++17 | 16.4.3.2 [using.headers] | "External declaration" used without being defined | Yes | 0 | |
2225(i) | C++14 | 16.4.3.2 [using.headers] | Unrealistic header inclusion checks required | Yes | ||
657(i) | NAD | 16.4.3.2 [using.headers] | unclear requirement about header inclusion | Yes | ||
1(i) | TC1 | 16.4.3.3 [using.linkage] | C library linkage editing oversight | Yes | ||
2281(i) | NAD Editorial | 16.4.3.3 [using.linkage] | C99 cross-reference typo in [using.linkage] | Yes | ||
3640(i) | New | 16.4.4 [utility.requirements] | Clarify which exceptions are propagated | Yes | 3 | |
2146(i) | Open | 16.4.4.2 [utility.arg.requirements] | Are reference types Copy/Move-Constructible/Assignable or Destructible? | No | 3 | |
2170(i) | C++17 | 16.4.4.2 [utility.arg.requirements] | Aggregates cannot be DefaultConstructible | Yes | 2 | |
724(i) | C++11 | 16.4.4.2 [utility.arg.requirements] | DefaultConstructible is not defined | Yes | ||
753(i) | C++11 | 16.4.4.2 [utility.arg.requirements] | Move constructor in draft | Yes | ||
1309(i) | C++11 | 16.4.4.2 [utility.arg.requirements] | Missing expressions for Move/CopyConstructible | Yes | ||
672(i) | CD1 | 16.4.4.2 [utility.arg.requirements] | Swappable requirements need updating | Yes | ||
594(i) | Resolved | 16.4.4.2 [utility.arg.requirements] | Disadvantages of defining Swappable in terms of CopyConstructible and Assignable | Yes | ||
742(i) | Resolved | 16.4.4.2 [utility.arg.requirements] | Enabling swap for proxy iterators | Yes | ||
1283(i) | Resolved | 16.4.4.2 [utility.arg.requirements] | MoveConstructible and MoveAssignable need clarification of moved-from state | Yes | ||
1322(i) | Resolved | 16.4.4.2 [utility.arg.requirements] | Explicit CopyConstructible requirements are insufficient | Yes | ||
390(i) | NAD Editorial | 16.4.4.2 [utility.arg.requirements] | CopyConstructible requirements too strict | Yes | ||
822(i) | NAD | 16.4.4.2 [utility.arg.requirements] | Object with explicit copy constructor no longer CopyConstructible | Yes | ||
1374(i) | NAD | 16.4.4.2 [utility.arg.requirements] | Clarify moved-from objects are "toxic" | Yes | ||
910(i) | NAD Concepts | 16.4.4.2 [utility.arg.requirements] | Effects of MoveAssignable | Yes | ||
2152(i) | LEWG | 16.4.4.3 [swappable.requirements] | Instances of standard container types are not swappable | Yes | 3 | |
2171(i) | NAD | 16.4.4.3 [swappable.requirements] | "swappable" undefined for swapping lvalue and rvalue | Yes | ||
2114(i) | Resolved | 16.4.4.4 [nullablepointer.requirements] | Incorrect "contextually convertible to bool" requirements | Yes | 3 | |
2291(i) | C++14 | 16.4.4.5 [hash.requirements] | std::hash is vulnerable to collision DoS attack | Yes | ||
1332(i) | C++11 | 16.4.4.5 [hash.requirements] | Let Hash objects throw! | Yes | ||
3267(i) | New | 16.4.4.6 [allocator.requirements] | Rebound allocators and is_always_equal | Yes | 4 | |
3044(i) | New | 16.4.4.6 [allocator.requirements] | Strange specification of max_size() for an allocator | Yes | 3 | |
3157(i) | New | 16.4.4.6 [allocator.requirements] | Allocator destroy and fancy pointer operations must be non-throwing | Yes | 3 | |
2461(i) | New | 16.4.4.6 [allocator.requirements] | Interaction between allocators and container exception safety guarantees | No | 3 | |
2178(i) | Pending NAD Editorial | 16.4.4.6 [allocator.requirements] | Allocator requirement changes not mentioned Annex C | Yes | 3 | |
2593(i) | C++20 | 16.4.4.6 [allocator.requirements] | Moved-from state of Allocators | Yes | 4 | |
3315(i) | C++20 | 16.4.4.6 [allocator.requirements] | Correct Allocator Default Behavior | Yes | 0 | |
2016(i) | C++17 | 16.4.4.6 [allocator.requirements] | Allocators must be no-throw swappable | Yes | 2 | |
2260(i) | C++17 | 16.4.4.6 [allocator.requirements] | Missing requirement for Allocator::pointer | Yes | 3 | |
2384(i) | C++17 | 16.4.4.6 [allocator.requirements] | Allocator's deallocate function needs better specification | Yes | 3 | |
2447(i) | C++17 | 16.4.4.6 [allocator.requirements] | Allocators and volatile-qualified value types | Yes | 4 | |
2455(i) | C++17 | 16.4.4.6 [allocator.requirements] | Allocator default construction should be allowed to throw | Yes | ||
2466(i) | C++17 | 16.4.4.6 [allocator.requirements] | allocator_traits::max_size() default behavior is incorrect | Yes | 3 | |
2467(i) | C++17 | 16.4.4.6 [allocator.requirements] | is_always_equal has slightly inconsistent default | Yes | 0 | |
2470(i) | C++17 | 16.4.4.6 [allocator.requirements] | Allocator's destroy function should be allowed to fail to instantiate | Yes | ||
2065(i) | C++14 | 16.4.4.6 [allocator.requirements] | Minimal allocator interface | Yes | ||
2081(i) | C++14 | 16.4.4.6 [allocator.requirements] | Allocator requirements should include CopyConstructible | Yes | ||
2147(i) | C++14 | 16.4.4.6 [allocator.requirements] | Unclear hint type in Allocator's allocate function | Yes | ||
2162(i) | C++14 | 16.4.4.6 [allocator.requirements] | allocator_traits::max_size missing noexcept | Yes | ||
2263(i) | C++14 | 16.4.4.6 [allocator.requirements] | Comparing iterators and allocator pointers with different const-character | Yes | 1 | |
752(i) | C++11 | 16.4.4.6 [allocator.requirements] | Allocator complexity requirement | Yes | ||
258(i) | CD1 | 16.4.4.6 [allocator.requirements] | Missing allocator requirement | Yes | ||
274(i) | CD1 | 16.4.4.6 [allocator.requirements] | a missing/impossible allocator requirement | Yes | ||
401(i) | CD1 | 16.4.4.6 [allocator.requirements] | incorrect type casts in table 32 in lib.allocator.requirements | Yes | ||
402(i) | CD1 | 16.4.4.6 [allocator.requirements] | wrong new expression in [some_]allocator::construct | Yes | ||
199(i) | TC1 | 16.4.4.6 [allocator.requirements] | What does allocate(0) return? | Yes | ||
2108(i) | Resolved | 16.4.4.6 [allocator.requirements] | No way to identify allocator types that always compare equal | Yes | 3 | |
431(i) | Resolved | 16.4.4.6 [allocator.requirements] | Swapping containers with unequal allocators | Yes | ||
635(i) | Resolved | 16.4.4.6 [allocator.requirements] | domain of allocator::address | Yes | ||
12(i) | NAD | 16.4.4.6 [allocator.requirements] | Way objects hold allocators unclear | Yes | ||
197(i) | NAD | 16.4.4.6 [allocator.requirements] | max_size() underspecified | Yes | ||
277(i) | NAD | 16.4.4.6 [allocator.requirements] | Normative encouragement in allocator requirements unclear | Yes | ||
487(i) | NAD | 16.4.4.6 [allocator.requirements] | Allocator::construct is too limiting | Yes | ||
560(i) | NAD | 16.4.4.6 [allocator.requirements] | User-defined allocators without default constructor | Yes | ||
1376(i) | NAD | 16.4.4.6 [allocator.requirements] | Allocator interface is not backward compatible | Yes | ||
2311(i) | NAD | 16.4.4.6 [allocator.requirements] | Allocator requirements should be further minimized | Yes | 2 | |
1375(i) | Dup | 16.4.4.6 [allocator.requirements] | reference_type should not have been removed from the allocator requirements | Yes | 1318 | |
3682(i) | New | 16.4.4.6.1 [allocator.requirements.general] | A Cpp17Allocator type can't silently ignore an unsupported alignment | No | 3 | |
3775(i) | WP | 16.4.4.6.1 [allocator.requirements.general] | Broken dependencies in the Cpp17Allocator requirements | Yes | ||
2954(i) | C++20 | 16.4.5 [constraints] | Specialization of the convenience variable templates should be prohibited | Yes | ||
3926(i) | New | 16.4.5.2.1 [namespace.std] | Which namespace std is the mentioned one? | Yes | 4 | |
3441(i) | WP | 16.4.5.2.1 [namespace.std] | Misleading note about calls to customization points | Yes | 1 | |
3177(i) | WP | 16.4.5.2.1 [namespace.std] | Limit permission to specialize variable templates to program-defined types | Yes | 3 | |
2139(i) | C++20 | 16.4.5.2.1 [namespace.std] | What is a user-defined type? | Yes | 4 | |
2129(i) | C++17 | 16.4.5.2.1 [namespace.std] | User specializations of std::initializer_list | Yes | 3 | |
1157(i) | C++11 | 16.4.5.2.1 [namespace.std] | Local types can now instantiate templates | Yes | ||
3442(i) | Resolved | 16.4.5.2.1 [namespace.std] | Unsatisfiable suggested implementation of customization points | Yes | 1 | |
3928(i) | New | 16.4.5.2.2 [namespace.posix] | Non-top-level namespace posix shouldn't be reserved | Yes | 3 | |
3550(i) | New | 16.4.5.3 [reserved.names] | Names reserved by C for standard library not reserved by C++ | No | 3 | |
120(i) | CD1 | 16.4.5.3 [reserved.names] | Can an implementor add specializations? | Yes | ||
226(i) | CD1 | 16.4.5.3 [reserved.names] | User supplied specializations or overloads of namespace std function templates | Yes | ||
232(i) | CD1 | 16.4.5.3 [reserved.names] | "depends" poorly defined in 17.4.3.1 | Yes | ||
422(i) | CD1 | 16.4.5.3 [reserved.names] | explicit specializations of member functions of class templates | Yes | ||
3885(i) | Tentatively Ready | 16.4.5.3.2 [zombie.names] | 'op' should be in [zombie.names] | Yes | ||
3132(i) | C++20 | 16.4.5.3.3 [macro.names] | Library needs to ban macros named expects or ensures | Yes | 0 | |
3147(i) | C++20 | 16.4.5.3.3 [macro.names] | Definitions of "likely" and "unlikely" are likely to cause problems | Yes | 0 | |
2014(i) | C++11 | 16.4.5.3.3 [macro.names] | More restrictions on macro names | Yes | ||
294(i) | CD1 | 16.4.5.3.3 [macro.names] | User defined macros and standard headers | Yes | ||
3920(i) | New | 16.4.5.3.4 [extern.names] | Bad footnotes claiming external linkage for entities defined as macros | No | 3 | |
2340(i) | C++17 | 16.4.5.6 [replacement.functions] | Replacement allocation functions declared as inline | Yes | 2 | |
404(i) | CD1 | 16.4.5.6 [replacement.functions] | May a replacement allocation function be declared inline? | Yes | ||
3142(i) | New | 16.4.5.8 [res.on.functions] | std::foo<incomplete> should be ill-formed NDR | Yes | 3 | |
1004(i) | C++11 | 16.4.5.8 [res.on.functions] | Clarify "throws an exception" | Yes | ||
611(i) | CD1 | 16.4.5.8 [res.on.functions] | Standard library templates and incomplete types | Yes | ||
3511(i) | New | 16.4.5.9 [res.on.arguments] | Clarify global permission to move | Yes | 3 | |
2468(i) | C++17 | 16.4.5.9 [res.on.arguments] | Self-move-assignment of library types | Yes | 2 | |
1362(i) | C++11 | 16.4.5.9 [res.on.arguments] | Description of binding to rvalue-references should use the new 'xvalue' vocabulary | Yes | ||
1204(i) | C++11 | 16.4.5.9 [res.on.arguments] | Global permission to move | Yes | ||
2224(i) | C++17 | 16.4.5.10 [res.on.objects] | Ambiguous status of access to non-live objects | Yes | 2 | |
1095(i) | C++11 | 16.4.5.10 [res.on.objects] | Shared objects and the library wording unclear | Yes | ||
3429(i) | New | 16.4.5.11 [res.on.requirements] | "models" should subsume like "satisfies" | Yes | 3 | |
2112(i) | C++14 | 16.4.6 [conforming] | User-defined classes that cannot be derived from | Yes | 1 | |
2891(i) | NAD | 16.4.6 [conforming] | Relax library requirements on volatile types | Yes | ||
94(i) | NAD | 16.4.6 [conforming] | May library implementors add template parameters to Standard Library classes? | Yes | ||
2113(i) | NAD | 16.4.6 [conforming] | Do library implementers have the freedom to add final to non-polymorphic components? | Yes | ||
2373(i) | NAD | 16.4.6 [conforming] | Make new entities and names in namespace std conforming extensions | Yes | 3 | |
1178(i) | C++11 | 16.4.6.2 [res.on.headers] | Header dependencies | Yes | ||
2133(i) | C++17 | 16.4.6.4 [global.functions] | Attitude to overloaded comma for iterators | Yes | 3 | |
2795(i) | C++17 | 16.4.6.4 [global.functions] | §[global.functions] provides incorrect example of ADL use | Yes | ||
225(i) | CD1 | 16.4.6.4 [global.functions] | std:: algorithms use of other unqualified algorithms | Yes | ||
147(i) | TC1 | 16.4.6.4 [global.functions] | Library Intro refers to global functions that aren't global | Yes | ||
2930(i) | NAD | 16.4.6.4 [global.functions] | Are implementations allowed to split non-member functions into several overloads? | Yes | ||
2695(i) | New | 16.4.6.5 [member.functions] | "As if" unclear in [member.functions] | No | 3 | |
2259(i) | C++17 | 16.4.6.5 [member.functions] | Issues in 17.6.5.5 rules for member functions | Yes | 3 | |
2563(i) | NAD | 16.4.6.5 [member.functions] | LWG 2259 relaxes requirements, perhaps unintentionally | Yes | 2 | |
95(i) | NAD | 16.4.6.5 [member.functions] | Members added by the implementation | Yes | ||
2013(i) | C++14 | 16.4.6.7 [constexpr.functions] | Do library implementers have the freedom to add constexpr? | Yes | ||
2892(i) | NAD | 16.4.6.7 [constexpr.functions] | Relax the prohibition on libraries adding constexpr | Yes | 1 | |
2044(i) | C++14 | 16.4.6.8 [algorithm.stable] | No definition of "Stable" for copy algorithms | Yes | ||
2414(i) | Open | 16.4.6.9 [reentrancy] | Member function reentrancy should be implementation-defined | Yes | 3 | |
2382(i) | Pending NAD | 16.4.6.9 [reentrancy] | Unclear order of container update versus object destruction on removing an object | Yes | 2 | |
1526(i) | Resolved | 16.4.6.10 [res.on.data.races] | C++ should not impose thread safety requirements on C99 library implementations | Yes | 3 | |
2866(i) | C++17 | 16.4.6.12 [derivation] | Incorrect derived classes constraints | Yes | ||
3854(i) | New | 16.4.6.13 [res.on.exception.handling] | §[res.on.exception.handling]/3 should not be applied to all standard library types | No | 3 | |
3229(i) | New | 16.4.6.13 [res.on.exception.handling] | §[res.on.exception.handling]#3 cannot apply to types with implicitly declared destructors | Yes | 3 | |
119(i) | TC1 | 16.4.6.13 [res.on.exception.handling] | Should virtual functions be allowed to strengthen the exception specification? | Yes | ||
2867(i) | Resolved | 16.4.6.13 [res.on.exception.handling] | Bad footnote about explicit exception-specification | Yes | ||
372(i) | NAD | 16.4.6.13 [res.on.exception.handling] | Inconsistent description of stdlib exceptions | Yes | ||
2839(i) | WP | 16.4.6.15 [lib.types.movedfrom] | Self-move-assignment of library types, again | Yes | 2 |
(view only non-Ready open issues)
Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates |
1066(i) | C++11 | 17 [support] | Use [[noreturn]] attribute in the library | Yes | ||
2709(i) | C++17 | 17.2 [support.types] | offsetof is unnecessarily imprecise | Yes | 2 | |
1097(i) | C++11 | 17.2 [support.types] | #define __STDCPP_THREADS | Yes | ||
1363(i) | C++11 | 17.2 [support.types] | offsetof should be marked noexcept | Yes | ||
306(i) | CD1 | 17.2 [support.types] | offsetof macro and non-POD types | Yes | ||
449(i) | CD1 | 17.2 [support.types] | Library Issue 306 Goes Too Far | Yes | ||
1314(i) | NAD | 17.2 [support.types] | NULL and nullptr | Yes | ||
2251(i) | NAD | 17.2 [support.types] | C++ library should define ssize_t | Yes | 3 | |
2950(i) | C++20 | 17.2.5 [support.types.byteops] | std::byte operations are misspecified | Yes | 1 | |
201(i) | CD1 | 17.3 [support.limits] | Numeric limits terminology wrong | Yes | ||
3217(i) | New | 17.3.1 [support.limits.general] | <memory> and <execution> should define __cpp_lib_parallel_algorithm | Yes | 3 | |
3137(i) | C++20 | 17.3.1 [support.limits.general] | Header for __cpp_lib_to_chars | Yes | 0 | |
3122(i) | C++20 | 17.3.1 [support.limits.general] | __cpp_lib_chrono_udls was accidentally dropped | Yes | 0 | |
3256(i) | C++20 | 17.3.1 [support.limits.general] | Feature testing macro for constexpr algorithms | Yes | 0 | |
3257(i) | C++20 | 17.3.1 [support.limits.general] | Missing feature testing macro update from P0858 | Yes | 0 | |
3274(i) | C++20 | 17.3.1 [support.limits.general] | Missing feature test macro for <span> | Yes | 0 | |
3887(i) | Tentatively Ready | 17.3.2 [version.syn] | Version macro for allocate_at_least | Yes | ||
3635(i) | Tentatively NAD | 17.3.2 [version.syn] | Add __cpp_lib_deduction_guides to feature test macros | Yes | 3 | |
3931(i) | New | 17.3.2 [version.syn] | Too many paper bump __cpp_lib_ranges | Yes | 3 | |
3807(i) | WP | 17.3.2 [version.syn] | The feature test macro for ranges::find_last should be renamed | Yes | ||
3841(i) | WP | 17.3.2 [version.syn] | <version> should not be "all freestanding" | Yes | ||
3750(i) | WP | 17.3.2 [version.syn] | Too many papers bump __cpp_lib_format | Yes | ||
3751(i) | WP | 17.3.2 [version.syn] | Missing feature macro for flat_set | Yes | ||
3792(i) | WP | 17.3.2 [version.syn] | __cpp_lib_constexpr_algorithms should also be defined in <utility> | Yes | ||
3621(i) | WP | 17.3.2 [version.syn] | Remove feature-test macro __cpp_lib_monadic_optional | Yes | ||
3437(i) | WP | 17.3.2 [version.syn] | __cpp_lib_polymorphic_allocator is in the wrong header | Yes | 0 | |
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 | |
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 | ||
3923(i) | New | 17.3.5.1 [numeric.limits.general] | The specification of numeric_limits doesn't clearly distinguish between implementation requirements and user requirements | Yes | 3 | |
3922(i) | New | 17.3.5.1 [numeric.limits.general] | It's unclear whether numeric_limits can be specialized by users | 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 | |
3828(i) | WP | 17.4.1 [cstdint.syn] | Sync intmax_t and uintmax_t with C2x | Yes | ||
2820(i) | WP | 17.4.1 [cstdint.syn] | Clarify <cstdint> macros | Yes | 3 | |
593(i) | CD1 | 17.4.1 [cstdint.syn] | __STDC_CONSTANT_MACROS | Yes | ||
557(i) | NAD Editorial | 17.4.1 [cstdint.syn] | TR1: div(_Longlong, _Longlong) vs div(intmax_t, intmax_t) | Yes | ||
553(i) | NAD Editorial | 17.4.1 [cstdint.syn] | very minor editorial change intptr_t / uintptr_t | Yes | ||
841(i) | NAD Editorial | 17.4.1 [cstdint.syn] | cstdint.syn inconsistent with C99 | Yes | ||
2764(i) | Dup | 17.4.1 [cstdint.syn] | Are <cstddint> macros optional? |
Yes | 3 | |
2815(i) | New | 17.5 [support.start.term] | quick_exit can deadlock | Yes | 3 | |
3084(i) | New | 17.5 [support.start.term] | Termination in C++ is unclear | No | 3 | |
993(i) | C++11 | 17.5 [support.start.term] | _Exit needs better specification | Yes | ||
1144(i) | C++11 | 17.5 [support.start.term] | "thread safe" is undefined | Yes | ||
3(i) | TC1 | 17.5 [support.start.term] | Atexit registration during atexit() call is not described | Yes | ||
2458(i) | C++17 | 17.6 [support.dynamic] | N3778 and new library deallocation signatures | Yes | 2 | |
2510(i) | C++17 | 17.6 [support.dynamic] | Tag types should not be DefaultConstructible | Yes | 2 | |
3106(i) | NAD | 17.6.2 [new.syn] | nothrow should be inline constexpr rather that extern const | Yes | 2 | |
2425(i) | C++17 | 17.6.3 [new.delete] | operator delete(void*, size_t) doesn't invalidate pointers sufficiently | Yes | 0 | |
1006(i) | C++11 | 17.6.3 [new.delete] | operator delete in garbage collected implementation | Yes | ||
9(i) | TC1 | 17.6.3 [new.delete] | Operator new(0) calls should not yield the same pointer | Yes | ||
2368(i) | Resolved | 17.6.3 [new.delete] | Replacing global operator new | Yes | 2 | |
3086(i) | New | 17.6.3.2 [new.delete.single] | Possible problem in §[new.delete.single] | Yes | 3 | |
2737(i) | New | 17.6.3.2 [new.delete.single] | Consider relaxing object size restrictions for single-object allocation functions | No | 3 | |
206(i) | CD1 | 17.6.3.2 [new.delete.single] | operator new(size_t, nothrow) may become unlinked to ordinary operator new if ordinary version replaced | Yes | ||
319(i) | CD1 | 17.6.3.2 [new.delete.single] | Storage allocation wording confuses "Required behavior", "Requires" | Yes | ||
627(i) | NAD | 17.6.3.2 [new.delete.single] | Low memory and exceptions | Yes | ||
298(i) | CD1 | 17.6.3.3 [new.delete.array] | ::operator delete[] requirement incorrect/insufficient | Yes | ||
3789(i) | NAD | 17.6.3.3 [new.delete.array] | Precondition of (not replaced) operator delete[] | Yes | ||
2303(i) | New | 17.6.3.4 [new.delete.placement] | Explicit instantiation of std::vector<UserType> broken? | No | 3 | |
2302(i) | Pending NAD | 17.6.3.4 [new.delete.placement] | Passing null pointer to placement new | Yes | 2 | |
114(i) | TC1 | 17.6.3.4 [new.delete.placement] | Placement forms example in error twice | Yes | 196 | |
196(i) | Dup | 17.6.3.4 [new.delete.placement] | Placement new example has alignment problems | Yes | 114 | |
2508(i) | New | 17.6.3.5 [new.delete.dataraces] | §[new.delete.dataraces] wording needs to be updated | No | 3 | |
1524(i) | C++11 | 17.6.3.5 [new.delete.dataraces] | Allocation functions are missing happens-before requirements and guarantees | Yes | ||
1366(i) | Resolved | 17.6.3.5 [new.delete.dataraces] | New-handler and data races | Yes | ||
1365(i) | Resolved | 17.6.4 [alloc.errors] | Thread-safety of handler functions | Yes | ||
2378(i) | C++17 | 17.6.4.1 [bad.alloc] | Behaviour of standard exception types | Yes | 0 | |
994(i) | C++11 | 17.6.4.3 [new.handler] | quick_exit should terminate well-defined | Yes | ||
3495(i) | WP | 17.6.5 [ptr.launder] | constexpr launder makes pointers to inactive members of unions usable | Yes | 3 | |
2859(i) | C++20 | 17.6.5 [ptr.launder] | Definition of reachable in [ptr.launder] misses pointer arithmetic from pointer-interconvertible object | Yes | 2 | |
2821(i) | Resolved | 17.6.5 [ptr.launder] | std::launder() should be marked as [[nodiscard]] | Yes | 3 | |
2860(i) | NAD | 17.6.5 [ptr.launder] | launder and base class subobjects | Yes | 2 | |
3624(i) | New | 17.7 [support.rtti] | Inconsistency of <typeinfo>, <initializer_list>, and <compare> in the standard library | Yes | 3 | |
2398(i) | Open | 17.7.3 [type.info] | type_info's destructor shouldn't be required to be virtual | Yes | 3 | |
108(i) | TC1 | 17.7.3 [type.info] | Lifetime of exception::what() return unspecified | Yes | ||
3396(i) | C++20 | 17.8.2.2 [support.srcloc.cons] | Clarify point of reference for source_location::current() (DE 169) | Yes | 2 | |
70(i) | TC1 | 17.9 [support.exception] | Uncaught_exception() missing throw() specification | Yes | ||
269(i) | NAD | 17.9 [support.exception] | cstdarg and unnamed parameters | Yes | ||
471(i) | C++11 | 17.9.3 [exception] | result of what() implementation-defined | Yes | ||
266(i) | CD1 | 17.9.4 [bad.exception] | bad_exception::~bad_exception() missing Effects clause | Yes | ||
2088(i) | Open | 17.9.5 [exception.terminate] | std::terminate problem | No | 3 | |
2111(i) | C++17 | 17.9.5.4 [terminate] | Which unexpected/terminate handler is called from the exception handling runtime? | Yes | 3 | |
313(i) | NAD | 17.9.5.4 [terminate] | set_terminate and set_unexpected question | Yes | ||
314(i) | NAD | 17.9.5.4 [terminate] | Is the stack unwound when terminate() is called? | Yes | ||
1130(i) | C++11 | 17.9.7 [propagation] | copy_exception name misleading | Yes | ||
744(i) | CD1 | 17.9.7 [propagation] | What is the lifetime of an exception pointed to by an exception_ptr? | Yes | ||
746(i) | CD1 | 17.9.7 [propagation] | current_exception may fail with bad_alloc | Yes | ||
820(i) | CD1 | 17.9.7 [propagation] | current_exception()'s interaction with throwing copy ctors | Yes | ||
829(i) | CD1 | 17.9.7 [propagation] | current_exception wording unclear about exception type | Yes | ||
1135(i) | Resolved | 17.9.7 [propagation] | exception_ptr should support contextual conversion to bool | Yes | ||
1307(i) | Resolved | 17.9.7 [propagation] | exception_ptr and allocator pointers don't understand != | Yes | ||
1364(i) | Resolved | 17.9.7 [propagation] | It is not clear how exception_ptr is synchronized | Yes | ||
707(i) | NAD | 17.9.7 [propagation] | null pointer constant for exception_ptr | Yes | ||
745(i) | NAD | 17.9.7 [propagation] | copy_exception API slices. | Yes | ||
1369(i) | NAD | 17.9.7 [propagation] | rethrow_exception may introduce data races | Yes | ||
2855(i) | C++17 | 17.9.8 [except.nested] | std::throw_with_nested("string_literal") | Yes | 0 | |
2483(i) | C++17 | 17.9.8 [except.nested] | throw_with_nested() should use is_final | Yes | 2 | |
2484(i) | C++17 | 17.9.8 [except.nested] | rethrow_if_nested() is doubly unimplementable | Yes | 2 | |
2784(i) | C++17 | 17.9.8 [except.nested] | Resolution to LWG 2484 is missing "otherwise, no effects" and is hard to parse | Yes | 0 | |
819(i) | C++11 | 17.9.8 [except.nested] | rethrow_if_nested | Yes | ||
1136(i) | C++11 | 17.9.8 [except.nested] | Incomplete specification of nested_exception::rethrow_nested() | Yes | ||
1216(i) | C++11 | 17.9.8 [except.nested] | LWG 1066 Incomplete? | Yes | ||
1370(i) | C++11 | 17.9.8 [except.nested] | throw_with_nested should not use perfect forwarding | Yes | ||
1008(i) | NAD | 17.9.8 [except.nested] | nested_exception wording unclear | Yes | ||
1132(i) | NAD | 17.9.8 [except.nested] | JP-30: nested exceptions | Yes | ||
1007(i) | NAD Concepts | 17.9.8 [except.nested] | throw_with_nested not concept enabled | Yes | ||
2453(i) | New | 17.10 [support.initlist] | §[iterator.range] and now [iterator.container] aren't available via <initializer_list> | No | 3 | |
2493(i) | New | 17.10 [support.initlist] | initializer_list supports incomplete classes | No | 4 | |
2432(i) | NAD | 17.10 [support.initlist] | initializer_list assignability | Yes | 2 | |
906(i) | NAD Concepts | 17.10 [support.initlist] | ObjectType is the wrong concept to constrain initializer_list | Yes | ||
3295(i) | Resolved | 17.11.2 [cmp.categories] | Comparison category operator== are mis-specified | Yes | 1 | |
3239(i) | Resolved | 17.11.2.2 [cmp.partialord] | Hidden friends should be specified more narrowly | Yes | ||
3584(i) | New | 17.11.3 [cmp.common] | Clarify common comparison category conversions | Yes | 3 | |
3587(i) | New | 17.11.4 [cmp.concept] | std::three_way_comparable_with<T, U, void> can be satisfied but can't be modeled | No | 3 | |
3360(i) | C++20 | 17.11.4 [cmp.concept] | three_way_comparable_with is inconsistent with similar concepts | Yes | 0 | |
3932(i) | New | 17.11.6 [cmp.alg] | Expression-equivalence is sometimes unimplementable when passing prvalue expressions to comparison CPOs | No | 3 | |
3491(i) | New | 17.11.6 [cmp.alg] | What is a "decayed type"? | No | 3 | |
3465(i) | WP | 17.11.6 [cmp.alg] | compare_partial_order_fallback requires F < E | Yes | 0 | |
3324(i) | C++20 | 17.11.6 [cmp.alg] | Special-case std::strong/weak/partial_order for pointers | Yes | 0 | |
3653(i) | New | 17.12.2 [coroutine.syn] | <coroutine> is freestanding, but uses std::hash which is not | No | 3 | |
3330(i) | C++20 | 17.12.2 [coroutine.syn] | Include <compare> from most library headers | Yes | 0 | |
3469(i) | Resolved | 17.12.4.7 [coroutine.handle.promise] | Precondition of coroutine_handle::promise may be insufficient | Yes | 2 | |
3460(i) | WP | 17.12.5.2.3 [coroutine.handle.noop.resumption] | Unimplementable noop_coroutine_handle guarantees | Yes | 2 | |
2099(i) | C++14 | 17.13 [support.runtime] | Unnecessary constraints of va_start() usage | Yes | ||
894(i) | C++11 | 17.13 [support.runtime] | longjmp and destructors | Yes | ||
619(i) | CD1 | 17.13 [support.runtime] | Longjmp wording problem | Yes | ||
2155(i) | Resolved | 17.13 [support.runtime] | Macro __bool_true_false_are_defined should be removed | Yes | 4 | |
2241(i) | Resolved | 17.13 [support.runtime] | <cstdalign> and #define of alignof | Yes | 2 | |
1265(i) | NAD | 17.13 [support.runtime] | longjmp and destructors | Yes | ||
3652(i) | NAD | 17.13.3 [csetjmp.syn] | Can we relax the preconditions of longjmp? | Yes | ||
2879(i) | Resolved | 17.13.4 [csignal.syn] | Removing C dependencies from signal handler wording | Yes | ||
3756(i) | WP | 17.13.5 [support.signal] | Is the std::atomic_flag class signal-safe? | Yes | 3 | |
2536(i) | C++17 | 17.14 [support.c.headers] | What should <complex.h> do? | Yes | 2 | |
2835(i) | C++17 | 17.14 [support.c.headers] | LWG 2536 seems to misspecify <tgmath.h> | Yes | 0 | |
551(i) | CD1 | 17.14 [support.c.headers] | <ccomplex> | Yes | ||
143(i) | NAD | 17.14 [support.c.headers] | C .h header wording unclear | Yes | ||
3827(i) | WP | 17.14.4 [stdalign.h.syn] | Deprecate <stdalign.h> and <stdbool.h> macros | Yes | ||
3883(i) | New | 17.14.7 [support.c.headers.other] | §[support.c.headers.other] Ambiguity in the requirements for includes | Yes | 4 | |
3799(i) | New | 17.14.7 [support.c.headers.other] | Should <math.h> provide 3-argument ::hypot overloads? | No | 3 | |
3484(i) | New | 17.14.7 [support.c.headers.other] | Should <stddef.h> declare ::nullptr_t? | Yes | 3 | |
3782(i) | WP | 17.14.7 [support.c.headers.other] | Should <math.h> declare ::lerp? | Yes |
(view only non-Ready open issues)
Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates |
3895(i) | New | 18.3 [concepts.syn] | Various relation concepts are missing default values of the second template parameters | Yes | 3 | |
3182(i) | C++20 | 18.4.2 [concept.same] | Specification of Same could be clearer | Yes | 0 | |
3608(i) | New | 18.4.4 [concept.convertible] | convertible_to and temporary-bound references | No | 3 | |
3459(i) | New | 18.4.4 [concept.convertible] | Why doesn't std::convertible_to have semantic requirement when To is reference-to-function type? | No | 3 | |
3557(i) | WP | 18.4.4 [concept.convertible] | The static_cast expression in convertible_to has the wrong operand | Yes | ||
3461(i) | WP | 18.4.4 [concept.convertible] | convertible_to's description mishandles cv-qualified void | Yes | 0 | |
3194(i) | C++20 | 18.4.4 [concept.convertible] | ConvertibleTo prose does not match code | Yes | 1 | |
3151(i) | Resolved | 18.4.4 [concept.convertible] | ConvertibleTo rejects conversions from array and function types | Yes | 3 | |
3153(i) | C++20 | 18.4.6 [concept.common] | Common and common_type have too little in common | Yes | 0 | |
3154(i) | C++20 | 18.4.6 [concept.common] | Common and CommonReference have a common defect | Yes | 0 | |
3175(i) | C++20 | 18.4.9 [concept.swappable] | The CommonReference requirement of concept SwappableWith is not satisfied in the example | Yes | 1 | |
3345(i) | Resolved | 18.4.9 [concept.swappable] | Incorrect usages of "models" versus "satisfies" | Yes | 2 | |
3149(i) | C++20 | 18.4.12 [concept.default.init] | DefaultConstructible should require default initialization | Yes | 2 | |
3338(i) | C++20 | 18.4.12 [concept.default.init] | Rename default_constructible to default_initializable | Yes | 0 | |
3421(i) | WP | 18.5.2 [concept.booleantestable] | Imperfect ADL emulation for boolean-testable | Yes | 0 | |
3329(i) | C++20 | 18.5.5 [concept.totallyordered] | totally_ordered_with both directly and indirectly requires common_reference_with | Yes | 0 | |
3331(i) | C++20 | 18.5.5 [concept.totallyordered] | Define totally_ordered/_with in terms of partially-ordered-with | Yes | 0 | |
3141(i) | C++20 | 18.6 [concepts.object] | CopyConstructible doesn't preserve source values | Yes | 2 |
(view only non-Ready open issues)
Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates |
1371(i) | NAD | 19 [diagnostics] | Standard exceptions require stronger no-throw guarantees | Yes | ||
254(i) | CD1 | 19.2 [std.exceptions] | Exception types in clause 19 are constructed from std::string | Yes | ||
2073(i) | NAD | 19.2 [std.exceptions] | Library exceptions that take string arguments | Yes | ||
2413(i) | New | 19.3 [assertions] | assert macro is overconstrained | No | 4 | |
3011(i) | Open | 19.3 [assertions] | Requirements for assert(E) inconsistent with C | No | 2 | |
2234(i) | C++17 | 19.3 [assertions] | assert() should allow usage in constant expressions | Yes | 2 | |
2559(i) | C++17 | 19.3 [assertions] | Error in LWG 2234's resolution | Yes | 0 | |
288(i) | CD1 | 19.4 [errno] | <cerrno> requirements missing macro EILSEQ | Yes | ||
3629(i) | WP | 19.5 [syserr] | make_error_code and make_error_condition are customization points |
Yes | 2 | |
1237(i) | C++11 | 19.5 [syserr] | Constrained error_code/error_condition members | Yes | ||
804(i) | CD1 | 19.5 [syserr] | Some problems with classes error_code/error_condition | Yes | ||
805(i) | CD1 | 19.5 [syserr] | posix_error::posix_errno concerns | Yes | ||
697(i) | Resolved | 19.5 [syserr] | New <system_error> header leads to name clashes | Yes | ||
832(i) | NAD | 19.5 [syserr] | Applying constexpr to System error support | Yes | ||
3869(i) | WP | 19.5.2 [system.error.syn] | Deprecate std::errc constants related to UNIX STREAMS | Yes | ||
2686(i) | C++17 | 19.5.2 [system.error.syn] | Why is std::hash specialized for error_code, but not error_condition? | Yes | 3 | |
2145(i) | C++14 | 19.5.3 [syserr.errcat] | error_category default constructor | Yes | ||
890(i) | C++11 | 19.5.3 [syserr.errcat] | Improving <system_error> initialization | Yes | ||
3019(i) | New | 19.5.3.4 [syserr.errcat.derived] | Presentation of "program defined classes derived from error_category" [syserr.errcat.derived] unclear and contains mistakes | No | 3 | |
3598(i) | WP | 19.5.3.5 [syserr.errcat.objects] | system_category().default_error_condition(0) is underspecified | Yes | ||
1372(i) | C++11 | 19.5.3.5 [syserr.errcat.objects] | Adopt recommended practice for standard error categories | Yes | ||
2992(i) | NAD | 19.5.3.5 [syserr.errcat.objects] | system_category() and error_code::error_code() should be constexpr | Yes | ||
3053(i) | New | 19.5.4.1 [syserr.errcode.overview] | Prohibit error_code construction from rvalues of error_category | Yes | 3 | |
825(i) | Resolved | 19.5.4.1 [syserr.errcode.overview] | Missing rvalues reference stream insert/extract operators? | Yes | ||
1229(i) | Resolved | 19.5.4.3 [syserr.errcode.modifiers] | error_code operator= typo | Yes | ||
971(i) | NAD | 19.5.4.5 [syserr.errcode.nonmembers] | Spurious diagnostic conversion function | Yes | ||
2109(i) | C++14 | 19.5.7 [syserr.hash] | Incorrect requirements for hash specializations | Yes | ||
698(i) | CD1 | 19.5.8.1 [syserr.syserr.overview] | system_error needs const char* constructors | Yes | ||
3162(i) | New | 19.5.8.2 [syserr.syserr.members] | system_error::system_error(error_code ec) not explicit | Yes | 3 | |
3112(i) | C++20 | 19.5.8.2 [syserr.syserr.members] | system_error and filesystem_error constructors taking a string may not be able to meet their postconditions | Yes | 0 | |
1103(i) | C++11 | 19.5.8.2 [syserr.syserr.members] | system_error constructor postcondition overly strict | Yes | ||
3625(i) | New | 19.6.2 [stacktrace.syn] | Should <stacktrace> provide range access function templates? | Yes | 3 | |
3515(i) | WP | 19.6.2 [stacktrace.syn] | §[stacktrace.basic.nonmem]: operator<< should be less templatized | Yes | 2 | |
3514(i) | Resolved | 19.6.2 [stacktrace.syn] | stacktrace should add type alias pmr::stacktrace | Yes | 3 | |
3507(i) | Open | 19.6.3.4 [stacktrace.entry.query] | P0881R7 ("stacktrace") does not define "actual file name", "actual line number" | No | 2 | |
3626(i) | New | 19.6.4.1 [stacktrace.basic.overview] | Is std::basic_stacktrace required to use contiguous storage? | Yes | 3 |
(view only non-Ready open issues)
Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates |
1073(i) | C++11 | 20.2 [memory] | Declaration of allocator_arg should be constexpr | Yes | ||
1401(i) | C++11 | 20.2 [memory] | Provide support for unique_ptr<T> == nullptr | Yes | ||
1402(i) | C++11 | 20.2 [memory] | nullptr constructors for smart pointers should be constexpr | Yes | ||
1233(i) | NAD Editorial | 20.2 [memory] | Missing unique_ptr signatures in synopsis | Yes | ||
1026(i) | NAD Concepts | 20.2 [memory] | Smart pointers need to be concept-constrained templates | Yes | ||
3814(i) | WP | 20.2.2 [memory.syn] | Add freestanding items requested by NB comments | Yes | ||
3552(i) | WP | 20.2.2 [memory.syn] | Parallel specialized memory algorithms should require forward iterators | Yes | ||
3303(i) | C++20 | 20.2.2 [memory.syn] | Bad "constexpr" marker for destroy/destroy_n | Yes | 0 | |
3454(i) | LEWG | 20.2.3 [pointer.traits] | pointer_traits::pointer_to should be constexpr | Yes | ||
3545(i) | WP | 20.2.3 [pointer.traits] | std::pointer_traits should be SFINAE-friendly | Yes | 2 | |
1404(i) | C++11 | 20.2.3 [pointer.traits] | pointer_traits should have a size_type member | Yes | ||
3374(i) | C++20 | 20.2.4 [pointer.conversion] | P0653 + P1006 should have made the other std::to_address overload constexpr | Yes | 0 | |
2421(i) | New | 20.2.5 [ptr.align] | Non-specification of handling zero size in std::align [ptr.align] | No | 3 | |
2377(i) | C++17 | 20.2.5 [ptr.align] | std::align requirements overly strict | Yes | 0 | |
1403(i) | C++11 | 20.2.7 [allocator.tag] | Inconsistent definitions for allocator_arg | Yes | ||
3901(i) | Tentatively NAD | 20.2.8 [allocator.uses] | Is uses-allocator construction of a cv-qualified object type still well-formed after LWG 3870? | No | ||
3192(i) | New | 20.2.8.2 [allocator.uses.construction] | §[allocator.uses.construction] functions misbehave for const types | Yes | 3 | |
3821(i) | WP | 20.2.8.2 [allocator.uses.construction] | uses_allocator_construction_args should have overload for pair-like | Yes | 2 | |
3677(i) | WP | 20.2.8.2 [allocator.uses.construction] | Is a cv-qualified pair specially handled in uses-allocator construction? | Yes | 2 | |
3525(i) | WP | 20.2.8.2 [allocator.uses.construction] | uses_allocator_construction_args fails to handle types convertible to pair | Yes | 3 | |
3526(i) | WP | 20.2.8.2 [allocator.uses.construction] | Return types of uses_allocator_construction_args unspecified | Yes | 3 | |
3527(i) | WP | 20.2.8.2 [allocator.uses.construction] | uses_allocator_construction_args handles rvalue pairs of rvalue references incorrectly | Yes | ||
3185(i) | C++20 | 20.2.8.2 [allocator.uses.construction] | Uses-allocator construction functions missing constexpr and noexcept | Yes | 0 | |
3187(i) | C++20 | 20.2.8.2 [allocator.uses.construction] | P0591R4 reverted DR 2586 fixes to scoped_allocator_adaptor::construct() | Yes | ||
3321(i) | C++20 | 20.2.8.2 [allocator.uses.construction] | uninitialized_construct_using_allocator should use construct_at | Yes | 0 | |
2284(i) | C++14 | 20.2.9 [allocator.traits] | Inconsistency in allocator_traits::max_size | Yes | ||
3665(i) | New | 20.2.9.2 [allocator.traits.types] | Is std::allocator_traits<Alloc>::rebind_alloc SFINAE-friendly? | No | 3 | |
1318(i) | NAD | 20.2.9.2 [allocator.traits.types] | N2982 removes previous allocator capabilities | Yes | 1375 | |
1285(i) | C++11 | 20.2.9.3 [allocator.traits.members] | allocator_traits call to new | Yes | ||
1286(i) | C++11 | 20.2.9.3 [allocator.traits.members] | allocator_traits::select_on_container_copy_construction type-o | Yes | ||
3916(i) | New | 20.2.10 [default.allocator] | allocator, polymorphic_allocator, and containers should forbid cv-qualified types | No | 3 | |
3917(i) | New | 20.2.10 [default.allocator] | Validity of allocator<void> and possibly polymorphic_allocator<void> should be clarified | Yes | 3 | |
3170(i) | WP | 20.2.10 [default.allocator] | is_always_equal added to std::allocator makes the standard library treat derived types as always equal | Yes | 2 | |
3035(i) | C++20 | 20.2.10 [default.allocator] | std::allocator's constructors should be constexpr | Yes | 0 | |
3307(i) | C++20 | 20.2.10 [default.allocator] | std::allocator<void>().allocate(n) | Yes | 0 | |
2103(i) | C++14 | 20.2.10 [default.allocator] | std::allocator_traits<std::allocator<T>>::propagate_on_container_move_assignment | Yes | ||
1027(i) | NAD Concepts | 20.2.10 [default.allocator] | std::allocator needs to be a concept-constrained template | Yes | ||
3684(i) | New | 20.2.10.2 [allocator.members] | std::allocator<T>::allocate_at_least in constant evaluation | Yes | 3 | |
3190(i) | C++20 | 20.2.10.2 [allocator.members] | std::allocator::allocate sometimes returns too little storage | Yes | 3 | |
234(i) | CD1 | 20.2.10.2 [allocator.members] | Typos in allocator definition | Yes | ||
400(i) | CD1 | 20.2.10.2 [allocator.members] | redundant type cast in lib.allocator.members | Yes | ||
578(i) | CD1 | 20.2.10.2 [allocator.members] | purpose of hint to allocator::allocate() | Yes | ||
634(i) | CD1 | 20.2.10.2 [allocator.members] | allocator.address() doesn't work for types overloading operator& | Yes | 350 | |
2089(i) | Resolved | 20.2.10.2 [allocator.members] | std::allocator::construct should use uniform initialization | Yes | 2 | |
350(i) | Dup | 20.2.10.2 [allocator.members] | allocator<>::address | Yes | 634 | |
2296(i) | C++17 | 20.2.11 [specialized.addressof] | std::addressof should be constexpr | Yes | 3 | |
2598(i) | C++17 | 20.2.11 [specialized.addressof] | addressof works on temporaries | Yes | 3 | |
970(i) | C++11 | 20.2.11 [specialized.addressof] | addressof overload unneeded | Yes | ||
2948(i) | C++20 | 20.3.1 [unique.ptr] | unique_ptr does not define operator<< for stream output | Yes | 0 | |
673(i) | CD1 | 20.3.1 [unique.ptr] | unique_ptr update | Yes | ||
740(i) | CD1 | 20.3.1 [unique.ptr] | Please remove *_ptr<T[N]> | Yes | ||
762(i) | CD1 | 20.3.1 [unique.ptr] | std::unique_ptr requires complete type? | Yes | ||
1193(i) | C++11 | 20.3.1.2 [unique.ptr.dltr] | default_delete cannot be instantiated with incomplete types | Yes | ||
854(i) | C++11 | 20.3.1.2.2 [unique.ptr.dltr.dflt] | default_delete converting constructor underspecified | Yes | ||
1517(i) | C++11 | 20.3.1.2.2 [unique.ptr.dltr.dflt] | default_delete's default constructor should be trivial | Yes | ||
938(i) | C++11 | 20.3.1.2.3 [unique.ptr.dltr.dflt1] | default_delete<T[]>::operator() should only accept T* | Yes | ||
3159(i) | New | 20.3.1.3 [unique.ptr.single] | §[unique.ptr.single] requirements on deleter may be too strict | No | 3 | |
2262(i) | Open | 20.3.1.3 [unique.ptr.single] | Requirement for unique_ptr<T>::get_deleter()(p) to be able to destroy the unique_ptr | Yes | 3 | |
2361(i) | C++17 | 20.3.1.3 [unique.ptr.single] | Apply 2299 resolution throughout library | Yes | ||
1303(i) | C++11 | 20.3.1.3 [unique.ptr.single] | shared_ptr, unique_ptr, and rvalue references v2 | Yes | ||
834(i) | Resolved | 20.3.1.3 [unique.ptr.single] | unique_ptr::pointer requirements underspecified | Yes | ||
983(i) | Resolved | 20.3.1.3 [unique.ptr.single] | unique_ptr reference deleters should not be moved from | Yes | ||
3588(i) | NAD | 20.3.1.3.1 [unique.ptr.single.general] | Strike out purposeless UB involving the deleter in members functions of unique_ptr | Yes | ||
3632(i) | WP | 20.3.1.3.2 [unique.ptr.single.ctor] | unique_ptr "Mandates: This constructor is not selected by class template argument deduction" | Yes | ||
2944(i) | C++20 | 20.3.1.3.2 [unique.ptr.single.ctor] | LWG 2905 accidentally removed requirement that construction of the deleter doesn't throw an exception | Yes | 0 | |
2801(i) | C++17 | 20.3.1.3.2 [unique.ptr.single.ctor] | Default-constructibility of unique_ptr | Yes | 2 | |
2905(i) | C++17 | 20.3.1.3.2 [unique.ptr.single.ctor] | is_constructible_v<unique_ptr<P, D>, P, D const &> should be false when D is not copy constructible | Yes | ||
932(i) | Resolved | 20.3.1.3.2 [unique.ptr.single.ctor] | unique_ptr(pointer p) for pointer deleter types | Yes | ||
950(i) | Resolved | 20.3.1.3.2 [unique.ptr.single.ctor] | unique_ptr converting ctor shouldn't accept array form | Yes | ||
1100(i) | Resolved | 20.3.1.3.2 [unique.ptr.single.ctor] | auto_ptr to unique_ptr conversion | Yes | ||
3164(i) | NAD | 20.3.1.3.2 [unique.ptr.single.ctor] | Unhelpful "shall not participate" constraints for unique_ptr with reference deleter | Yes | ||
3455(i) | WP | 20.3.1.3.4 [unique.ptr.single.asgn] | Incorrect Postconditions on unique_ptr move assignment | Yes | 0 | |
2047(i) | C++14 | 20.3.1.3.4 [unique.ptr.single.asgn] | Incorrect "mixed" move-assignment semantics of unique_ptr | Yes | ||
2246(i) | C++14 | 20.3.1.3.4 [unique.ptr.single.asgn] | unique_ptr assignment effects w.r.t. deleter | Yes | ||
1021(i) | C++11 | 20.3.1.3.4 [unique.ptr.single.asgn] | Allow nullptr_t assignments to unique_ptr | Yes | ||
2228(i) | Resolved | 20.3.1.3.4 [unique.ptr.single.asgn] | Missing SFINAE rule in unique_ptr templated assignment | Yes | 3 | |
3911(i) | New | 20.3.1.3.5 [unique.ptr.single.observers] | unique_ptr 's operator* is missing a mandate |
Yes | 3 | |
2762(i) | WP | 20.3.1.3.5 [unique.ptr.single.observers] | unique_ptr operator*() should be noexcept | Yes | 3 | |
686(i) | NAD | 20.3.1.3.5 [unique.ptr.single.observers] | unique_ptr and shared_ptr fail to specify non-convertibility to int for unspecified-bool-type | Yes | ||
998(i) | C++11 | 20.3.1.3.6 [unique.ptr.single.modifiers] | Smart pointer referencing its owner | Yes | ||
806(i) | CD1 | 20.3.1.3.6 [unique.ptr.single.modifiers] | unique_ptr::reset effects incorrect, too permissive | Yes | ||
933(i) | NAD | 20.3.1.3.6 [unique.ptr.single.modifiers] | Unique_ptr defect | Yes | ||
2118(i) | Resolved | 20.3.1.4 [unique.ptr.runtime] | [CD] unique_ptr for array does not support cv qualification conversion of actual argument | Yes | 1 | |
1293(i) | Resolved | 20.3.1.4 [unique.ptr.runtime] | unique_ptr<T[], D> needs to get rid of unspecified-pointer-type | Yes | ||
2060(i) | NAD Editorial | 20.3.1.4 [unique.ptr.runtime] | unique_ptr<T[]>(nullptr_t) missing noexcept | Yes | ||
2520(i) | C++17 | 20.3.1.4.2 [unique.ptr.runtime.ctor] | N4089 broke initializing unique_ptr<T[]> from a nullptr | Yes | 2 | |
2169(i) | C++14 | 20.3.1.4.5 [unique.ptr.runtime.modifiers] | Missing reset() requirements in unique_ptr specialization | Yes | ||
821(i) | C++11 | 20.3.1.4.5 [unique.ptr.runtime.modifiers] | Minor cleanup : unique_ptr | Yes | ||
3426(i) | WP | 20.3.1.6 [unique.ptr.special] | operator<=>(const unique_ptr<T, D>&, nullptr_t) can't get no satisfaction | Yes | 0 | |
1297(i) | Resolved | 20.3.1.6 [unique.ptr.special] | unique_ptr's relational operator functions should induce a total order | Yes | ||
2376(i) | C++17 | 20.3.2.1 [util.smartptr.weak.bad] | bad_weak_ptr::what() overspecified | Yes | ||
2594(i) | New | 20.3.2.2 [util.smartptr.shared] | Contradicting definition of empty shared_ptr on shared_ptr(nullptr, d) | Yes | 3 | |
2996(i) | C++20 | 20.3.2.2 [util.smartptr.shared] | Missing rvalue overloads for shared_ptr operations | Yes | ||
3018(i) | C++20 | 20.3.2.2 [util.smartptr.shared] | shared_ptr of function type | Yes | 3 | |
2873(i) | C++17 | 20.3.2.2 [util.smartptr.shared] | Add noexcept to several shared_ptr related functions | Yes | ||
2365(i) | C++17 | 20.3.2.2 [util.smartptr.shared] | Missing noexcept in shared_ptr::shared_ptr(nullptr_t) | Yes | ||
2411(i) | C++17 | 20.3.2.2 [util.smartptr.shared] | shared_ptr is only contextually convertible to bool | Yes | 0 | |
758(i) | C++11 | 20.3.2.2 [util.smartptr.shared] | shared_ptr and nullptr | Yes | ||
896(i) | C++11 | 20.3.2.2 [util.smartptr.shared] | Library thread safety issue | Yes | ||
541(i) | CD1 | 20.3.2.2 [util.smartptr.shared] | shared_ptr template assignment and void | Yes | ||
674(i) | CD1 | 20.3.2.2 [util.smartptr.shared] | shared_ptr interface changes for consistency with N1856 | Yes | ||
710(i) | CD1 | 20.3.2.2 [util.smartptr.shared] | Missing postconditions | Yes | ||
813(i) | CD1 | 20.3.2.2 [util.smartptr.shared] | "empty" undefined for shared_ptr | Yes | ||
2810(i) | Resolved | 20.3.2.2 [util.smartptr.shared] | use_count and unique in shared_ptr | Yes | ||
2864(i) | Resolved | 20.3.2.2 [util.smartptr.shared] | Merge shared_ptr changes from Library Fundamentals to C++17 | Yes | ||
1406(i) | NAD | 20.3.2.2 [util.smartptr.shared] | Support hashing smart-pointers based on owner | Yes | ||
1031(i) | NAD | 20.3.2.2 [util.smartptr.shared] | Need shared_ptr conversion to a unique_ptr | Yes | ||
2906(i) | New | 20.3.2.2.2 [util.smartptr.shared.const] | There is no ability to supply an allocator for the control block when constructing a shared_ptr from a unique_ptr | No | 3 | |
3548(i) | WP | 20.3.2.2.2 [util.smartptr.shared.const] | shared_ptr construction from unique_ptr should move (not copy) the deleter | Yes | ||
3233(i) | C++20 | 20.3.2.2.2 [util.smartptr.shared.const] | Broken requirements for shared_ptr converting constructors | Yes | 0 | |
2802(i) | C++17 | 20.3.2.2.2 [util.smartptr.shared.const] | shared_ptr constructor requirements for a deleter | Yes | 2 | |
2874(i) | C++17 | 20.3.2.2.2 [util.smartptr.shared.const] | Constructor shared_ptr::shared_ptr(Y*) should be constrained | Yes | ||
2875(i) | C++17 | 20.3.2.2.2 [util.smartptr.shared.const] | shared_ptr::shared_ptr(Y*, D, […]) constructors should be constrained | Yes | ||
2876(i) | C++17 | 20.3.2.2.2 [util.smartptr.shared.const] | shared_ptr::shared_ptr(const weak_ptr<Y>&) constructor should be constrained | Yes | ||
2399(i) | C++17 | 20.3.2.2.2 [util.smartptr.shared.const] | shared_ptr's constructor from unique_ptr should be constrained | Yes | 0 | |
2415(i) | C++17 | 20.3.2.2.2 [util.smartptr.shared.const] | Inconsistency between unique_ptr and shared_ptr | Yes | 2 | |
2495(i) | C++17 | 20.3.2.2.2 [util.smartptr.shared.const] | There is no such thing as an Exception Safety element | Yes | 0 | |
2685(i) | C++17 | 20.3.2.2.2 [util.smartptr.shared.const] | shared_ptr deleters must not not throw on move construction | Yes | 0 | |
881(i) | C++11 | 20.3.2.2.2 [util.smartptr.shared.const] | shared_ptr conversion issue | Yes | ||
925(i) | C++11 | 20.3.2.2.2 [util.smartptr.shared.const] | shared_ptr's explicit conversion from unique_ptr | Yes | ||
687(i) | CD1 | 20.3.2.2.2 [util.smartptr.shared.const] | shared_ptr conversion constructor not constrained | Yes | ||
827(i) | Resolved | 20.3.2.2.2 [util.smartptr.shared.const] | constexpr shared_ptr::shared_ptr()? | Yes | ||
1407(i) | Resolved | 20.3.2.2.2 [util.smartptr.shared.const] | Synch shared_ptr constructors taking movable types | Yes | ||
2751(i) | New | 20.3.2.2.3 [util.smartptr.shared.dest] | shared_ptr deleter not specified to observe expired weak_ptr instances | No | 4 | |
899(i) | C++11 | 20.3.2.2.3 [util.smartptr.shared.dest] | Adjusting shared_ptr for nullptr_t | Yes | ||
575(i) | CD1 | 20.3.2.2.3 [util.smartptr.shared.dest] | the specification of ~shared_ptr is MT-unfriendly, makes implementation assumptions | Yes | ||
2907(i) | NAD | 20.3.2.2.3 [util.smartptr.shared.dest] | Semantics for destroying the deleter and the control-block of a shared_ptr are unclear | Yes | ||
884(i) | Resolved | 20.3.2.2.5 [util.smartptr.shared.mod] | shared_ptr swap | Yes | ||
2434(i) | C++17 | 20.3.2.2.6 [util.smartptr.shared.obs] | shared_ptr::use_count() is efficient | Yes | 0 | |
2572(i) | C++17 | 20.3.2.2.6 [util.smartptr.shared.obs] | The remarks for shared_ptr::operator* should apply to cv-qualified void as well | Yes | 0 | |
711(i) | C++11 | 20.3.2.2.6 [util.smartptr.shared.obs] | Contradiction in empty shared_ptr | Yes | ||
540(i) | CD1 | 20.3.2.2.6 [util.smartptr.shared.obs] | shared_ptr<void>::operator*() | Yes | ||
542(i) | CD1 | 20.3.2.2.6 [util.smartptr.shared.obs] | shared_ptr observers | Yes | ||
2776(i) | Resolved | 20.3.2.2.6 [util.smartptr.shared.obs] | shared_ptr unique() and use_count() | Yes | 2 | |
2337(i) | NAD | 20.3.2.2.6 [util.smartptr.shared.obs] | shared_ptr operator*() should not be noexcept | Yes | 2 | |
3210(i) | New | 20.3.2.2.7 [util.smartptr.shared.create] | allocate_shared is inconsistent about removing const from the pointer passed to allocator construct and destroy | Yes | 3 | |
3216(i) | New | 20.3.2.2.7 [util.smartptr.shared.create] | Rebinding the allocator before calling construct/destroy in allocate_shared | Yes | 3 | |
3005(i) | C++20 | 20.3.2.2.7 [util.smartptr.shared.create] | Destruction order of arrays by make_shared/allocate_shared only recommended? | Yes | 0 | |
3007(i) | C++20 | 20.3.2.2.7 [util.smartptr.shared.create] | allocate_shared should rebind allocator to cv-unqualified value_type for construction | Yes | 0 | |
3008(i) | C++20 | 20.3.2.2.7 [util.smartptr.shared.create] | make_shared (sub)object destruction semantics are not specified | Yes | 2 | |
2696(i) | C++17 | 20.3.2.2.7 [util.smartptr.shared.create] | Interaction between make_shared and enable_shared_from_this is underspecified | Yes | 2 | |
2070(i) | Resolved | 20.3.2.2.7 [util.smartptr.shared.create] | allocate_shared should use allocator_traits<A>::construct | Yes | 2 | |
3427(i) | WP | 20.3.2.2.8 [util.smartptr.shared.cmp] | operator<=>(const shared_ptr<T>&, nullptr_t) definition ill-formed | Yes | 0 | |
2908(i) | C++17 | 20.3.2.2.8 [util.smartptr.shared.cmp] | The less-than operator for shared pointers could do more | Yes | ||
1262(i) | C++11 | 20.3.2.2.8 [util.smartptr.shared.cmp] | std::less<std::shared_ptr<T>> is underspecified | Yes | ||
743(i) | CD1 | 20.3.2.2.9 [util.smartptr.shared.spec] | rvalue swap for shared_ptr | Yes | ||
2964(i) | C++20 | 20.3.2.2.10 [util.smartptr.shared.cast] | Apparently redundant requirement for dynamic_pointer_cast | Yes | 0 | |
2877(i) | Resolved | 20.3.2.2.10 [util.smartptr.shared.cast] | Strengthen meaning of "empty shared_ptr<T>" in dynamic_pointer_cast | Yes | ||
2400(i) | C++17 | 20.3.2.2.11 [util.smartptr.getdeleter] | shared_ptr's get_deleter() should use addressof() | Yes | 0 | |
533(i) | CD1 | 20.3.2.2.11 [util.smartptr.getdeleter] | typo in 2.2.3.10/1 | Yes | ||
545(i) | CD1 | 20.3.2.2.11 [util.smartptr.getdeleter] | When is a deleter deleted? | Yes | ||
741(i) | NAD | 20.3.2.2.11 [util.smartptr.getdeleter] | Const-incorrect get_deleter function for shared_ptr | Yes | ||
3001(i) | C++20 | 20.3.2.3 [util.smartptr.weak] | weak_ptr::element_type needs remove_extent_t | Yes | 0 | |
2083(i) | C++14 | 20.3.2.3 [util.smartptr.weak] | const-qualification on weak_ptr::owner_before | Yes | ||
2315(i) | C++14 | 20.3.2.3 [util.smartptr.weak] | weak_ptr should be movable | Yes | 2 | |
1256(i) | C++11 | 20.3.2.3 [util.smartptr.weak] | weak_ptr comparison functions should be removed | Yes | ||
3195(i) | WP | 20.3.2.3.2 [util.smartptr.weak.const] | What is the stored pointer value of an empty weak_ptr? | Yes | 2 | |
2942(i) | C++20 | 20.3.2.3.6 [util.smartptr.weak.obs] | LWG 2873's resolution missed weak_ptr::owner_before | Yes | ||
2316(i) | C++14 | 20.3.2.3.6 [util.smartptr.weak.obs] | weak_ptr::lock() should be atomic | Yes | 0 | |
1231(i) | C++11 | 20.3.2.3.6 [util.smartptr.weak.obs] | weak_ptr comparisons incompletely resolved | Yes | ||
949(i) | C++11 | 20.3.2.4 [util.smartptr.ownerless] | owner_less | Yes | ||
2529(i) | Resolved | 20.3.2.5 [util.smartptr.enab] | Assigning to enable_shared_from_this::__weak_this twice | Yes | 3 | |
2179(i) | Resolved | 20.3.2.5 [util.smartptr.enab] | enable_shared_from_this and construction from raw pointers | Yes | 3 | |
3734(i) | WP | 20.3.4.1 [out.ptr.t] | Inconsistency in inout_ptr and out_ptr for empty case | Yes | 2 | |
3897(i) | New | 20.3.4.3 [inout.ptr.t] | inout_ptr will not update raw pointer to 0 | Yes | 2 | |
3594(i) | WP | 20.3.4.3 [inout.ptr.t] | inout_ptr — inconsistent release() in destructor | Yes | 1 | |
3471(i) | WP | 20.4 [mem.res] | polymorphic_allocator::allocate does not satisfy Cpp17Allocator requirements | Yes | 3 | |
2700(i) | NAD | 20.4 [mem.res] | resource_adaptor went missing | Yes | 1 | |
3681(i) | New | 20.4.1 [mem.res.syn] | Further considerations on LWG 3679 | No | 4 | |
3637(i) | New | 20.4.2 [mem.res.class] | pmr::memory_resource::do_allocate needs clarification | No | 3 | |
2724(i) | C++17 | 20.4.2 [mem.res.class] | The protected virtual member functions of memory_resource should be private | Yes | 4 | |
2843(i) | C++20 | 20.4.2.3 [mem.res.private] | Unclear behavior of std::pmr::memory_resource::do_allocate() | Yes | 3 | |
2701(i) | NAD Editorial | 20.4.2.3 [mem.res.private] | Unclear requirement in [memory.resource.private] | Yes | 3 | |
3683(i) | WP | 20.4.3 [mem.poly.allocator.class] | operator== for polymorphic_allocator cannot deduce template argument in common cases | Yes | ||
3036(i) | WP | 20.4.3 [mem.poly.allocator.class] | polymorphic_allocator::destroy is extraneous | Yes | 3 | |
3037(i) | C++20 | 20.4.3 [mem.poly.allocator.class] | polymorphic_allocator and incomplete types | Yes | 2 | |
3304(i) | C++20 | 20.4.3 [mem.poly.allocator.class] | Allocate functions of std::polymorphic_allocator should require [[nodiscard]] | Yes | 3 | |
3312(i) | Dup | 20.4.3 [mem.poly.allocator.class] | polymorphic_allocator::allocate_object and new_object should be [[nodiscard]] | Yes | ||
2969(i) | C++20 | 20.4.3.3 [mem.poly.allocator.mem] | polymorphic_allocator::construct() shouldn't pass resource() | Yes | 2 | |
2975(i) | C++20 | 20.4.3.3 [mem.poly.allocator.mem] | Missing case for pair construction in scoped and polymorphic allocators | Yes | 3 | |
3038(i) | C++20 | 20.4.3.3 [mem.poly.allocator.mem] | polymorphic_allocator::allocate should not allow integer overflow to create vulnerabilities | Yes | 2 | |
3237(i) | C++20 | 20.4.3.3 [mem.poly.allocator.mem] | LWG 3038 and 3190 have inconsistent PRs | Yes | 2 | |
3310(i) | C++20 | 20.4.3.3 [mem.poly.allocator.mem] | Replace SIZE_MAX with numeric_limits<size_t>::max() | Yes | 0 | |
3113(i) | Resolved | 20.4.3.3 [mem.poly.allocator.mem] | polymorphic_allocator::construct() should more closely match scoped_allocator_adaptor::construct() | Yes | 3 | |
3634(i) | New | 20.4.4 [mem.res.global] | When are static-duration memory_resource objects destroyed? | No | 3 | |
2961(i) | C++20 | 20.4.4 [mem.res.global] | Bad postcondition for set_default_resource | Yes | ||
2848(i) | New | 20.4.5.2 [mem.res.pool.options] | Pass-through threshold for pool allocator | No | 3 | |
3143(i) | WP | 20.4.6 [mem.res.monotonic.buffer] | monotonic_buffer_resource growth policy is unclear | Yes | 2 | |
3120(i) | WP | 20.4.6.3 [mem.res.monotonic.buffer.mem] | Unclear behavior of monotonic_buffer_resource::release() | Yes | 2 | |
3000(i) | C++20 | 20.4.6.3 [mem.res.monotonic.buffer.mem] | monotonic_memory_resource::do_is_equal uses dynamic_cast unnecessarily | Yes | 0 | |
1316(i) | C++11 | 20.5 [allocator.adaptor] | scoped_allocator_adaptor operator== has no definition | Yes | ||
1405(i) | Resolved | 20.5 [allocator.adaptor] | Move scoped_allocator_adaptor into separate header | Yes | ||
2476(i) | C++17 | 20.5.1 [allocator.adaptor.syn] | scoped_allocator_adaptor is not assignable | Yes | 0 | |
2782(i) | C++17 | 20.5.3 [allocator.adaptor.cnstr] | scoped_allocator_adaptor constructors must be constrained | Yes | 0 | |
3116(i) | C++20 | 20.5.4 [allocator.adaptor.members] | OUTERMOST_ALLOC_TRAITS needs remove_reference_t | Yes | 0 | |
2586(i) | C++17 | 20.5.4 [allocator.adaptor.members] | Wrong value category used in scoped_allocator_adaptor::construct() | Yes | 0 | |
2203(i) | C++14 | 20.5.4 [allocator.adaptor.members] | scoped_allocator_adaptor uses wrong argument types for piecewise construction | Yes | ||
2511(i) | Resolved | 20.5.4 [allocator.adaptor.members] | scoped_allocator_adaptor piecewise construction does not require CopyConstructible | Yes | 3 | |
1321(i) | Resolved | 20.5.4 [allocator.adaptor.members] | scoped_allocator_adaptor construct and destroy don't use allocator_traits | Yes | ||
2717(i) | NAD | 20.5.4 [allocator.adaptor.members] | scoped_allocator_adaptor uses forward to do move's job | Yes |
(view only non-Ready open issues)
Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates |
3930(i) | Tentatively NAD | 21 [meta] | Simplify type trait wording | Yes | ||
2290(i) | Open | 21 [meta] | Top-level "SFINAE"-based constraints should get a separate definition in Clause 17 | Yes | 3 | |
2452(i) | Core | 21 [meta] | is_constructible, etc. and default arguments | No | 3 | |
2582(i) | C++17 | 21 [meta] | §[res.on.functions]/2's prohibition against incomplete types shouldn't apply to type traits | Yes | 0 | |
1114(i) | C++11 | 21 [meta] | Type traits underspecified | Yes | ||
2040(i) | Resolved | 21 [meta] | Missing type traits related to is_convertible | Yes | ||
719(i) | Resolved | 21 [meta] | std::is_literal type traits should be provided | Yes | 750 | |
1390(i) | Resolved | 21 [meta] | Limit speculative compilation for constructible/convertible traits | Yes | ||
1391(i) | Resolved | 21 [meta] | constructible/convertible traits and access control | Yes | ||
590(i) | NAD Editorial | 21 [meta] | Type traits implementation latitude should be removed for C++0x | Yes | ||
1120(i) | NAD | 21 [meta] | New type trait - remove_all | Yes | ||
1018(i) | NAD Concepts | 21 [meta] | Trait specifications should be expressed in terms of concepts | Yes | ||
2314(i) | C++14 | 21.2.1 [intseq.general] | apply() should return decltype(auto) and use decay_t before tuple_size | Yes | 0 | |
2345(i) | NAD | 21.2.2 [intseq.intseq] | integer_sequence should have a self-typedef ::type | Yes | 2 | |
2845(i) | New | 21.3.2 [meta.rqmts] | enable_if, result_of, common_type and aligned_storage do not meet the definition of TransformationTrait | No | 3 | |
2514(i) | C++17 | 21.3.2 [meta.rqmts] | Type traits must not be final | Yes | 3 | |
3099(i) | New | 21.3.3 [meta.type.synop] | is_assignable<Incomplete&, Incomplete&> | Yes | 2 | |
2939(i) | New | 21.3.3 [meta.type.synop] | Some type-completeness constraints of traits are overspecified | No | 2 | |
2922(i) | LEWG | 21.3.3 [meta.type.synop] | The *_constant<> templates do not make use of template<auto> | No | ||
2581(i) | C++17 | 21.3.3 [meta.type.synop] | Specialization of <type_traits> variable templates should be prohibited | Yes | 0 | |
2928(i) | Resolved | 21.3.3 [meta.type.synop] | is_callable is not a good name | Yes | ||
2797(i) | Resolved | 21.3.3 [meta.type.synop] | Trait precondition violations | Yes | 2 | |
2927(i) | Resolved | 21.3.3 [meta.type.synop] | Encoding a functor and argument types as a function signature for is_callable and result_of is fragile | Yes | ||
2871(i) | NAD | 21.3.3 [meta.type.synop] | User specializations of type traits should be ill-formed | Yes | ||
2910(i) | Dup | 21.3.3 [meta.type.synop] | Template deduction and integral_constant | Yes | ||
2346(i) | C++14 | 21.3.4 [meta.help] | integral_constant's member functions should be marked noexcept | Yes | 0 | |
1019(i) | C++11 | 21.3.4 [meta.help] | Make integral_constant objects useable in integral-constant-expressions | Yes | ||
1202(i) | NAD | 21.3.4 [meta.help] | integral_constant needs a spring clean | Yes | ||
1092(i) | NAD Concepts | 21.3.4 [meta.help] | Class template integral_constant should be a constrained template | Yes | ||
2015(i) | C++14 | 21.3.5 [meta.unary] | Incorrect pre-conditions for some type traits | Yes | ||
525(i) | Resolved | 21.3.5 [meta.unary] | type traits definitions not clear | Yes | ||
1392(i) | Resolved | 21.3.5 [meta.unary] | result_of should support pointer-to-data-member | Yes | ||
2247(i) | C++14 | 21.3.5.2 [meta.unary.cat] | Type traits and std::nullptr_t | Yes | ||
2827(i) | New | 21.3.5.4 [meta.unary.prop] | is_trivially_constructible and non-trivial destructors | No | 3 | |
3929(i) | New | 21.3.5.4 [meta.unary.prop] | Preconditions for type traits should be Mandates | Yes | 3 | |
3697(i) | New | 21.3.5.4 [meta.unary.prop] | Preconditions of reference_constructs_from_temporary/reference_converts_from_temporary seem wrong | Yes | 3 | |
2496(i) | New | 21.3.5.4 [meta.unary.prop] | Certain hard-to-avoid errors not in the immediate context are not allowed to be triggered by the evaluation of type traits | No | 3 | |
2116(i) | Open | 21.3.5.4 [meta.unary.prop] | is_nothrow_constructible and destructors | No | 3 | |
2358(i) | Open | 21.3.5.4 [meta.unary.prop] | Apparently-bogus definition of is_empty type trait | Yes | 3 | |
2077(i) | Open | 21.3.5.4 [meta.unary.prop] | Further incomplete constraints for type traits | No | 3 | |
3486(i) | LEWG | 21.3.5.4 [meta.unary.prop] | is_constructible<T[], T...> may be misleading in C++20 | No | ||
3819(i) | WP | 21.3.5.4 [meta.unary.prop] | reference_meows_from_temporary should not use is_meowible | Yes | ||
3823(i) | WP | 21.3.5.4 [meta.unary.prop] | Unnecessary precondition for is_aggregate | Yes | ||
2972(i) | C++20 | 21.3.5.4 [meta.unary.prop] | What is is_trivially_destructible_v<int>? | Yes | ||
3354(i) | C++20 | 21.3.5.4 [meta.unary.prop] | has_strong_structural_equality has a meaningless definition | Yes | 1 | |
2911(i) | C++17 | 21.3.5.4 [meta.unary.prop] | An is_aggregate type trait is needed | Yes | ||
2336(i) | C++17 | 21.3.5.4 [meta.unary.prop] | is_trivially_constructible/is_trivially_assignable traits are always false | Yes | 3 | |
2367(i) | C++17 | 21.3.5.4 [meta.unary.prop] | pair and tuple are not correctly implemented for is_constructible with no args | Yes | 3 | |
2560(i) | C++17 | 21.3.5.4 [meta.unary.prop] | is_constructible underspecified when applied to a function type | Yes | 0 | |
2738(i) | C++17 | 21.3.5.4 [meta.unary.prop] | is_constructible with void types | Yes | ||
2049(i) | C++14 | 21.3.5.4 [meta.unary.prop] | is_destructible is underspecified | Yes | ||
2196(i) | C++14 | 21.3.5.4 [meta.unary.prop] | Specification of is_*[copy/move]_[constructible/assignable] unclear for non-referencable types | Yes | ||
2197(i) | C++14 | 21.3.5.4 [meta.unary.prop] | Specification of is_[un]signed unclear for non-arithmetic types | Yes | ||
2298(i) | C++14 | 21.3.5.4 [meta.unary.prop] | [CD] is_nothrow_constructible is always false because of create<> | Yes | ||
931(i) | C++11 | 21.3.5.4 [meta.unary.prop] | type trait extent<T, I> | Yes | ||
1131(i) | C++11 | 21.3.5.4 [meta.unary.prop] | C++0x does not need alignment_of | Yes | ||
749(i) | CD1 | 21.3.5.4 [meta.unary.prop] | Currently has_nothrow_copy_constructor<T>::value is true if T has 'a' nothrow copy constructor. | Yes | ||
1174(i) | Resolved | 21.3.5.4 [meta.unary.prop] | Type property predicates | Yes | ||
1260(i) | Resolved | 21.3.5.4 [meta.unary.prop] | is_constructible<int*,void*> reports true | Yes | ||
1393(i) | Resolved | 21.3.5.4 [meta.unary.prop] | Trivial traits imply noexcept | Yes | ||
1394(i) | Resolved | 21.3.5.4 [meta.unary.prop] | is_constructible reports false positives | Yes | ||
2828(i) | NAD Editorial | 21.3.5.4 [meta.unary.prop] | Clarify <cstdalign> (following adoption of P0063r3) | Yes | ||
1239(i) | NAD Editorial | 21.3.5.4 [meta.unary.prop] | Defect report | Yes | ||
747(i) | NAD | 21.3.5.4 [meta.unary.prop] | We have 3 separate type traits to identify classes supporting no-throw operations | Yes | ||
748(i) | NAD | 21.3.5.4 [meta.unary.prop] | The is_abstract type trait is defined by reference to 10.4. | Yes | ||
1228(i) | NAD | 21.3.5.4 [meta.unary.prop] | User-specialized nothrow type traits | Yes | ||
2317(i) | C++14 | 21.3.6 [meta.unary.prop.query] | The type property queries should be UnaryTypeTraits returning size_t | Yes | 0 | |
3400(i) | New | 21.3.7 [meta.rel] | Does is_nothrow_convertible consider destruction of the destination type? | No | 3 | |
3174(i) | New | 21.3.7 [meta.rel] | Precondition on is_convertible is too strong | Yes | 3 | |
975(i) | C++11 | 21.3.7 [meta.rel] | is_convertible cannot be instantiated for non-convertible types | Yes | ||
2895(i) | Resolved | 21.3.7 [meta.rel] | Passing function types to result_of and is_callable | Yes | ||
3022(i) | Resolved | 21.3.7 [meta.rel] | is_convertible<derived*, base*> may lead to ODR | Yes | 2 | |
1395(i) | NAD Editorial | 21.3.7 [meta.rel] | Inconsistent reference links should be unified | Yes | ||
750(i) | Dup | 21.3.7 [meta.rel] | The current definition for is_convertible requires that the type be implicitly convertible, so explicit constructors are ignored. | Yes | 719 | |
2101(i) | C++17 | 21.3.8 [meta.trans] | Some transformation types can produce impossible types | Yes | 3 | |
3205(i) | New | 21.3.8.7 [meta.trans.other] | decay_t in the new common_type fallback should be remove_cvref_t | Yes | 3 | |
3152(i) | WP | 21.3.8.7 [meta.trans.other] | common_type and common_reference have flaws in common | Yes | 3 | |
2979(i) | C++20 | 21.3.8.7 [meta.trans.other] | aligned_union should require complete object types | Yes | 0 | |
3034(i) | C++20 | 21.3.8.7 [meta.trans.other] | P0767R1 breaks previously-standard-layout types | Yes | 0 | |
3140(i) | C++20 | 21.3.8.7 [meta.trans.other] | COMMON_REF is unimplementable as specified | Yes | 0 | |
3380(i) | C++20 | 21.3.8.7 [meta.trans.other] | common_type and comparison categories | Yes | 0 | |
2396(i) | C++17 | 21.3.8.7 [meta.trans.other] | underlying_type doesn't say what to do for an incomplete enumeration type | Yes | 0 | |
2408(i) | C++17 | 21.3.8.7 [meta.trans.other] | SFINAE-friendly common_type/iterator_traits is missing in C++14 | Yes | ||
2460(i) | C++17 | 21.3.8.7 [meta.trans.other] | LWG issue 2408 and value categories | Yes | 2 | |
2141(i) | C++14 | 21.3.8.7 [meta.trans.other] | common_type trait produces reference types | Yes | ||
1187(i) | C++11 | 21.3.8.7 [meta.trans.other] | std::decay | Yes | ||
705(i) | CD1 | 21.3.8.7 [meta.trans.other] | type-trait decay incompletely specified | Yes | ||
856(i) | CD1 | 21.3.8.7 [meta.trans.other] | Removal of aligned_union | Yes | ||
2465(i) | Resolved | 21.3.8.7 [meta.trans.other] | SFINAE-friendly common_type is nearly impossible to specialize correctly and regresses key functionality | Yes | 2 | |
2763(i) | Resolved | 21.3.8.7 [meta.trans.other] | common_type_t<void, void> is undefined |
Yes | 2 | |
1055(i) | Resolved | 21.3.8.7 [meta.trans.other] | Provide a trait that returns the underlying type of an enumeration type | Yes | ||
2397(i) | Resolved | 21.3.8.7 [meta.trans.other] | map<K, V>::emplace and explicit V constructors | Yes | 1 | |
849(i) | NAD | 21.3.8.7 [meta.trans.other] | missing type traits to compute root class and derived class of types in a class hierachy | Yes | ||
1020(i) | NAD | 21.3.8.7 [meta.trans.other] | Restore aligned_union | Yes | ||
2569(i) | C++17 | 21.3.9 [meta.logical] | conjunction and disjunction requirements are too strict | Yes | 2 | |
2587(i) | C++17 | 21.3.9 [meta.logical] | "Convertible to bool" requirement in conjunction and disjunction | Yes | 3 | |
2557(i) | C++17 | 21.3.9 [meta.logical] | Logical operator traits are broken in the zero-argument case | Yes | 0 | |
2567(i) | C++17 | 21.3.9 [meta.logical] | Specification of logical operator traits uses BaseCharacteristic, which is defined only for UnaryTypeTraits and BinaryTypeTraits | Yes | 2 | |
921(i) | C++11 | 21.4.3 [ratio.ratio] | Rational Arithmetic should use template aliases | Yes | ||
1388(i) | C++11 | 21.4.3 [ratio.ratio] | LWG 1281 incorrectly accepted | Yes | ||
1122(i) | Resolved | 21.4.3 [ratio.ratio] | Ratio values should be constexpr | Yes | ||
1281(i) | Resolved | 21.4.3 [ratio.ratio] | CopyConstruction and Assignment between ratios having the same normalized form | Yes | ||
948(i) | C++11 | 21.4.4 [ratio.arithmetic] | ratio arithmetic tweak | Yes | ||
1389(i) | Resolved | 21.4.4 [ratio.arithmetic] | Compile-time rational arithmetic and overflow | Yes | ||
1121(i) | NAD | 21.4.4 [ratio.arithmetic] | Support for multiple arguments | Yes |
(view only non-Ready open issues)
Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates |
312(i) | CD1 | 22 [utilities] | Table 27 is missing headers | Yes | ||
2888(i) | Resolved | 22 [utilities] | Variables of library tag types need to be inline variables | Yes | ||
2889(i) | Resolved | 22 [utilities] | Mark constexpr global variables as inline | Yes | ||
1075(i) | Resolved | 22 [utilities] | Scoped allocators are too complex | Yes | ||
2893(i) | NAD | 22 [utilities] | Parsing Hexadecimally in P0067R4 | Yes | ||
2212(i) | C++17 | 22.2 [utility] | tuple_size for const pair request <tuple> header | Yes | 3 | |
1255(i) | C++11 | 22.2 [utility] | declval should be added to the library | Yes | ||
2955(i) | Resolved | 22.2 [utility] | to_chars / from_chars depend on std::string | Yes | ||
2456(i) | Resolved | 22.2 [utility] | Incorrect exception specifications for 'swap' throughout library | Yes | 1 | |
1377(i) | Resolved | 22.2 [utility] | The revised forward is not compatible with access-control | Yes | ||
1289(i) | NAD | 22.2 [utility] | Generic casting requirements for smart pointers | Yes | ||
1373(i) | NAD | 22.2 [utility] | Customizable traits should have their own headers | Yes | ||
2153(i) | LEWG | 22.2.2 [utility.swap] | Narrowing of the non-member swap contract | No | 2 | |
2554(i) | Resolved | 22.2.2 [utility.swap] | Swapping multidimensional arrays is never noexcept | Yes | 2 | |
2800(i) | Resolved | 22.2.2 [utility.swap] | constexpr swap | Yes | 3 | |
2297(i) | NAD | 22.2.3 [utility.exchange] | [CD] Missing type requirements for std::exchange | Yes | ||
2388(i) | NAD | 22.2.3 [utility.exchange] | Handling self-assignment in the proposed library function std::exchange | Yes | 2 | |
3757(i) | WP | 22.2.4 [forward] | What's the effect of std::forward_like<void>(x)? | Yes | ||
939(i) | C++11 | 22.2.4 [forward] | Problem with std::identity and reference-to-temporaries | Yes | ||
808(i) | CD1 | 22.2.4 [forward] | §[forward] incorrect redundant specification | Yes | ||
700(i) | CD1 | 22.2.4 [forward] | N1856 defines struct identity | Yes | ||
823(i) | Resolved | 22.2.4 [forward] | identity<void> seems broken | Yes | ||
1054(i) | Resolved | 22.2.4 [forward] | forward broken | Yes | ||
3902(i) | New | 22.2.6 [declval] | Return type of std::declval<cv void> should be (cv-unqualified) void | Yes | 4 | |
2599(i) | New | 22.2.6 [declval] | Library incomplete type permission phrase is unclear | No | 3 | |
296(i) | C++11 | 22.3 [pairs] | Missing descriptions and requirements of pair operators | Yes | ||
811(i) | C++11 | 22.3 [pairs] | pair of pointers no longer works with literal 0 | Yes | ||
885(i) | C++11 | 22.3 [pairs] | pair assignment | Yes | ||
265(i) | CD1 | 22.3 [pairs] | std::pair::pair() effects overly restrictive | Yes | ||
706(i) | CD1 | 22.3 [pairs] | make_pair() should behave as make_tuple() wrt. reference_wrapper() | Yes | ||
181(i) | TC1 | 22.3 [pairs] | make_pair() unintended behavior | Yes | ||
353(i) | Resolved | 22.3 [pairs] | std::pair missing template assignment | Yes | ||
482(i) | Resolved | 22.3 [pairs] | Swapping pairs | Yes | ||
1378(i) | Resolved | 22.3 [pairs] | pair and tuple have too many conversions | Yes | ||
1380(i) | Resolved | 22.3 [pairs] | pair and tuple of references need to better specify move-semantics | Yes | ||
1382(i) | Resolved | 22.3 [pairs] | pair and tuple constructors should forward arguments | Yes | ||
1383(i) | Resolved | 22.3 [pairs] | Inconsistent defaulted move/copy members in pair and tuple | Yes | ||
840(i) | NAD | 22.3 [pairs] | pair default template argument | Yes | ||
916(i) | NAD | 22.3 [pairs] | Redundant move-assignment operator of pair should be removed | Yes | ||
348(i) | Dup | 22.3 [pairs] | Minor issue with std::pair operator< | Yes | 532 | |
1167(i) | NAD Concepts | 22.3 [pairs] | pair<T,U> doesn't model LessThanComparable in unconstrained code even if T and U do. | Yes | ||
3342(i) | New | 22.3.2 [pairs.pair] | Library wording uses "initializes x with y", which is underspecified | No | 3 | |
2289(i) | Open | 22.3.2 [pairs.pair] | constexpr guarantees of defaulted functions still insufficient | No | 3 | |
2958(i) | C++20 | 22.3.2 [pairs.pair] | Moves improperly defined as deleted | Yes | 2 | |
3346(i) | C++20 | 22.3.2 [pairs.pair] | pair and tuple copy and move constructor have backwards specification | Yes | 0 | |
3382(i) | C++20 | 22.3.2 [pairs.pair] | NTTP for pair and array | Yes | 2 | |
2729(i) | C++17 | 22.3.2 [pairs.pair] | Missing SFINAE on std::pair::operator= | Yes | 2 | |
1324(i) | Resolved | 22.3.2 [pairs.pair] | Still too many implicit conversions for pair and tuple | Yes | ||
1326(i) | Resolved | 22.3.2 [pairs.pair] | Missing/wrong preconditions for pair and tuple functions | Yes | ||
1379(i) | Resolved | 22.3.2 [pairs.pair] | pair copy-assignment not consistent for references | Yes | ||
2068(i) | NAD | 22.3.2 [pairs.pair] | std::pair not C++03-compatible with defaulted copy c'tor | Yes | ||
2766(i) | New | 22.3.3 [pairs.spec] | Swapping non-swappable types | Yes | 3 | |
3865(i) | WP | 22.3.3 [pairs.spec] | Sorting a range of pairs | Yes | 2 | |
3347(i) | C++20 | 22.3.3 [pairs.spec] | std::pair<T, U> now requires T and U to be less-than-comparable | Yes | 1 | |
3166(i) | New | 22.3.4 [pair.astuple] | No such descriptive element as Value: | No | 3 | |
2974(i) | C++20 | 22.3.4 [pair.astuple] | Diagnose out of bounds tuple_element/variant_alternative | Yes | ||
1061(i) | NAD Editorial | 22.3.4 [pair.astuple] | Bad indexing for tuple access to pair (Editorial?) | Yes | ||
2899(i) | C++20 | 22.4 [tuple] | is_(nothrow_)move_constructible and tuple, optional and unique_ptr | Yes | 2 | |
522(i) | CD1 | 22.4 [tuple] | Tuple doesn't define swap | Yes | ||
801(i) | Resolved | 22.4 [tuple] | tuple and pair trivial members | Yes | ||
2773(i) | C++17 | 22.4.1 [tuple.general] | Making std::ignore constexpr | Yes | 0 | |
2796(i) | C++17 | 22.4.1 [tuple.general] | tuple should be a literal type | Yes | 2 | |
2446(i) | NAD | 22.4.1 [tuple.general] | Unspecialized std::tuple_size should be defined | Yes | ||
3378(i) | New | 22.4.2 [tuple.syn] | tuple_size_v/tuple_element_t should be available when tuple_size/tuple_element are | Yes | 3 | |
1116(i) | Resolved | 22.4.4 [tuple.tuple] | Literal constructors for tuple | Yes | ||
2051(i) | Resolved | 22.4.4 [tuple.tuple] | Explicit tuple constructors for more than one parameter | Yes | 2 | |
1077(i) | NAD Editorial | 22.4.4 [tuple.tuple] | Nonesense tuple declarations | Yes | ||
3583(i) | New | 22.4.4.1 [tuple.cnstr] | Clarify if/when short circuiting applies to conditions in Constraints: elements | No | 3 | |
2528(i) | New | 22.4.4.1 [tuple.cnstr] | Order of std::tuple construction unspecified | No | 3 | |
3121(i) | WP | 22.4.4.1 [tuple.cnstr] | tuple constructor constraints for UTypes&&... overloads | Yes | 2 | |
3211(i) | WP | 22.4.4.1 [tuple.cnstr] | std::tuple<> should be trivially constructible | Yes | 3 | |
3158(i) | C++20 | 22.4.4.1 [tuple.cnstr] | tuple(allocator_arg_t, const Alloc&) should be conditionally explicit | Yes | 3 | |
2312(i) | C++17 | 22.4.4.1 [tuple.cnstr] | tuple's constructor constraints need to be phrased more precisely | Yes | 2 | |
2549(i) | C++17 | 22.4.4.1 [tuple.cnstr] | Tuple EXPLICIT constructor templates that take tuple parameters end up taking references to temporaries and will create dangling references | Yes | 2 | |
886(i) | C++11 | 22.4.4.1 [tuple.cnstr] | tuple construction | Yes | ||
807(i) | CD1 | 22.4.4.1 [tuple.cnstr] | tuple construction should not fail unless its element's construction fails | Yes | ||
3155(i) | Resolved | 22.4.4.1 [tuple.cnstr] | tuple<any, any>{allocator_arg_t, an_allocator} | Yes | 3 | |
2419(i) | Resolved | 22.4.4.1 [tuple.cnstr] | Clang's libc++ extension to std::tuple | Yes | ||
1117(i) | Resolved | 22.4.4.1 [tuple.cnstr] | tuple copy constructor | Yes | ||
3440(i) | NAD | 22.4.4.1 [tuple.cnstr] | Aggregate-paren-init breaks direct-initializing a tuple or optional from {aggregate-member-value} | Yes | 2 | |
917(i) | NAD | 22.4.4.1 [tuple.cnstr] | Redundant move-assignment operator of tuple should be removed | Yes | ||
918(i) | NAD Concepts | 22.4.4.3 [tuple.swap] | Swap for tuple needs to be conceptualized | Yes | ||
2933(i) | New | 22.4.5 [tuple.creation] | PR for LWG 2773 could be clearer | Yes | 3 | |
2275(i) | C++14 | 22.4.5 [tuple.creation] | [CD] Why is forward_as_tuple not constexpr? | Yes | ||
2301(i) | C++14 | 22.4.5 [tuple.creation] | Why is std::tie not constexpr? | Yes | 2 | |
1384(i) | C++11 | 22.4.5 [tuple.creation] | Function pack_arguments is poorly named | Yes | ||
1385(i) | C++11 | 22.4.5 [tuple.creation] | tuple_cat should be a single variadic signature | Yes | ||
1386(i) | C++11 | 22.4.5 [tuple.creation] | pack_arguments overly complex | Yes | ||
1201(i) | Resolved | 22.4.5 [tuple.creation] | Do we always want to unwrap ref-wrappers in make_tuple | Yes | ||
3528(i) | WP | 22.4.6 [tuple.apply] | make_from_tuple can perform (the equivalent of) a C-style cast | Yes | 3 | |
2770(i) | C++17 | 22.4.7 [tuple.helper] | tuple_size<const T> specialization is not SFINAE compatible and breaks decomposition declarations | Yes | 1 | |
2313(i) | C++14 | 22.4.7 [tuple.helper] | tuple_size should always derive from integral_constant<size_t, N> | Yes | 2 | |
1118(i) | C++11 | 22.4.7 [tuple.helper] | tuple query APIs do not support cv-qualification | Yes | ||
775(i) | CD1 | 22.4.7 [tuple.helper] | Tuple indexing should be unsigned? | Yes | ||
1119(i) | NAD | 22.4.7 [tuple.helper] | tuple query APIs do not support references | Yes | ||
2485(i) | C++17 | 22.4.8 [tuple.elem] | get() should be overloaded for const tuple&& | Yes | 1 | |
1191(i) | C++11 | 22.4.8 [tuple.elem] | tuple get API should respect rvalues | Yes | ||
3882(i) | New | 22.4.9 [tuple.rel] | tuple relational operators have confused friendships | Yes | 3 | |
3728(i) | New | 22.4.9 [tuple.rel] | Can't make neither head nor tail of the description of operator<=>(tuple, tuple) | Yes | 4 | |
2472(i) | New | 22.4.9 [tuple.rel] | Heterogeneous comparisons in the standard library can result in ambiguities | No | 3 | |
532(i) | LEWG | 22.4.9 [tuple.rel] | Tuple comparison | Yes | 348 | |
1335(i) | C++11 | 22.4.9 [tuple.rel] | Insufficient requirements for tuple::operator<() | Yes | ||
928(i) | NAD Concepts | 22.4.9 [tuple.rel] | Wrong concepts used for tuple's comparison operators | Yes | ||
2857(i) | C++17 | 22.5 [optional] | {variant,optional,any}::emplace should return the constructed value | Yes | 1 | |
2862(i) | Resolved | 22.5 [optional] | LWG 2756 should be accepted | Yes | ||
2990(i) | Open | 22.5.3 [optional.optional] | optional::value_type is not always a value type | Yes | 3 | |
3196(i) | C++20 | 22.5.3 [optional.optional] | std::optional<T> is ill-formed is T is an array | Yes | 0 | |
2900(i) | C++17 | 22.5.3 [optional.optional] | The copy and move constructors of optional are not constexpr | Yes | ||
2756(i) | C++17 | 22.5.3 [optional.optional] | C++ WP optional<T> should 'forward' T's implicit conversions | Yes | 1 | |
2825(i) | Resolved | 22.5.3 [optional.optional] | LWG 2756 breaks class template argument deduction for optional | Yes | 2 | |
3016(i) | NAD | 22.5.3 [optional.optional] | optional and over-aligned types | Yes | 3 | |
3886(i) | New | 22.5.3.1 [optional.optional.general] | Monad mo' problems | Yes | 3 | |
3709(i) | WP | 22.5.3.1 [optional.optional.general] | LWG-3703 was underly ambitious | Yes | ||
2811(i) | New | 22.5.3.2 [optional.ctor] | "Selected constructor" wording is incorrect for optional/variant/any | Yes | 3 | |
2842(i) | C++17 | 22.5.3.2 [optional.ctor] | in_place_t check for optional::optional(U&&) should decay U | Yes | 0 | |
2753(i) | Resolved | 22.5.3.2 [optional.ctor] | Optional's constructors and assignments need constraints | Yes | 0 | |
2746(i) | New | 22.5.3.4 [optional.assign] | Inconsistency between requirements for emplace between optional and variant | Yes | 3 | |
2748(i) | C++17 | 22.5.3.5 [optional.swap] | swappable traits for optionals | Yes | 0 | |
3424(i) | New | 22.5.3.6 [optional.observe] | optional::value_or should never return a cv-qualified type | Yes | 3 | |
2829(i) | Open | 22.5.3.6 [optional.observe] | LWG 2740 leaves behind vacuous words | No | 2 | |
2740(i) | C++17 | 22.5.3.6 [optional.observe] | constexpr optional<T>::operator-> | Yes | 0 | |
3613(i) | New | 22.5.4 [optional.nullopt] | Specify that nullopt_t is copyable | Yes | 3 | |
2736(i) | C++17 | 22.5.4 [optional.nullopt] | nullopt_t insufficiently constrained | Yes | 2 | |
3562(i) | NAD | 22.5.4 [optional.nullopt] | Superseding nullopt_t's requirement to not be DefaultConstructible | Yes | ||
2806(i) | C++17 | 22.5.5 [optional.bad.access] | Base class of bad_optional_access | Yes | 1 | |
3746(i) | WP | 22.5.8 [optional.comp.with.t] | optional's spaceship with U with a type derived from optional causes infinite constraint meta-recursion | Yes | ||
3566(i) | WP | 22.5.8 [optional.comp.with.t] | Constraint recursion for operator<=>(optional<T>, U) | Yes | ||
2945(i) | C++20 | 22.5.8 [optional.comp.with.t] | Order of template parameters in optional comparisons | Yes | 2 | |
2934(i) | C++17 | 22.5.8 [optional.comp.with.t] | optional<const T> doesn't compare with T | Yes | ||
3627(i) | New | 22.5.9 [optional.specalg] | Inconsistent specifications for std::make_optional overloads | Yes | 3 | |
2805(i) | Resolved | 22.6 [variant] | void and reference type alternatives in variant, variant<> and index() | Yes | ||
2881(i) | New | 22.6.3 [variant.variant] | Adopt section III of P0308R0 | No | 3 | |
2901(i) | C++17 | 22.6.3 [variant.variant] | Variants cannot properly support allocators | Yes | 0 | |
2902(i) | NAD | 22.6.3 [variant.variant] | variant should only support complete types | Yes | 0 | |
2971(i) | NAD | 22.6.3 [variant.variant] | variant should require Destructible types | Yes | ||
3215(i) | New | 22.6.3.2 [variant.ctor] | variant default constructor has vague constexpr requirements | No | 2 | |
2833(i) | Open | 22.6.3.2 [variant.ctor] | Library needs to specify what it means when it declares a function constexpr | Yes | 2 | |
2991(i) | LEWG | 22.6.3.2 [variant.ctor] | variant copy constructor missing noexcept(see below) | Yes | ||
3024(i) | C++20 | 22.6.3.2 [variant.ctor] | variant's copies must be deleted instead of disabled via SFINAE | Yes | ||
2903(i) | C++17 | 22.6.3.2 [variant.ctor] | The form of initialization for the emplace-constructors is not specified | Yes | ||
3228(i) | Resolved | 22.6.3.2 [variant.ctor] | Surprising variant construction | Yes | 2 | |
2882(i) | Resolved | 22.6.3.2 [variant.ctor] | Clarify variant construction | Yes | ||
3069(i) | New | 22.6.3.4 [variant.assign] | Move assigning variant's subobject corrupts data | Yes | 3 | |
3585(i) | WP | 22.6.3.4 [variant.assign] | Variant converting assignment with immovable alternative | Yes | ||
2904(i) | C++17 | 22.6.3.4 [variant.assign] | Make variant move-assignment more exception safe | Yes | ||
2749(i) | C++17 | 22.6.3.7 [variant.swap] | swappable traits for variants | Yes | 1 | |
2970(i) | C++20 | 22.6.7 [variant.visit] | Return type of std::visit misspecified | Yes | 2 | |
3052(i) | Resolved | 22.6.7 [variant.visit] | visit is underconstrained | Yes | 2 | |
2809(i) | Resolved | 22.6.12 [variant.hash] | variant hash requirements | Yes | ||
2868(i) | C++17 | 22.7.3 [any.bad.any.cast] | Missing specification of bad_any_cast::what() | Yes | ||
3416(i) | New | 22.7.4 [any.class] | The Throws: specification of std::any does not mention allocation | No | 3 | |
2789(i) | C++17 | 22.7.4 [any.class] | Equivalence of contained objects | Yes | 0 | |
2744(i) | C++17 | 22.7.4.2 [any.cons] | any's in_place constructors | Yes | 0 | |
2754(i) | Resolved | 22.7.4.2 [any.cons] | The in_place constructors and emplace functions added by P0032R3 don't require CopyConstructible | Yes | 1 | |
2886(i) | NAD | 22.7.4.5 [any.observers] | Keep the empty() functions in any | Yes | ||
3423(i) | New | 22.7.5 [any.nonmembers] | std::any_cast should never return a cv-qualified type | Yes | 3 | |
3305(i) | Open | 22.7.5 [any.nonmembers] | any_cast<void> | Yes | 2 | |
2768(i) | C++17 | 22.7.5 [any.nonmembers] | any_cast and move semantics | Yes | 0 | |
2769(i) | C++17 | 22.7.5 [any.nonmembers] | Redundant const in the return type of any_cast(const any&) | Yes | 0 | |
3688(i) | New | 22.8.4 [expected.bad] | Exception specifications of copy/move member functions of std::bad_expected_access | No | 2 | |
3891(i) | New | 22.8.6.1 [expected.object.general] | LWG 3870 breaks std::expected<cv T, E> | Yes | 2 | |
3754(i) | WP | 22.8.6.1 [expected.object.general] | Class template expected synopsis contains declarations that do not match the detailed description |
Yes | ||
3836(i) | WP | 22.8.6.2 [expected.object.cons] | std::expected<bool, E1> conversion constructor expected(const expected<U, G>&) should take precedence over expected(U&&) with operator bool | Yes | 1 | |
3843(i) | WP | 22.8.6.6 [expected.object.obs] | std::expected<T,E>::value() & assumes E is copy constructible | Yes | ||
3938(i) | Tentatively Ready | 22.8.6.7 [expected.object.monadic] | Cannot use std::expected monadic ops with move-only error_type |
Yes | ||
3866(i) | WP | 22.8.6.7 [expected.object.monadic] | Bad Mandates for expected::transform_error overloads | Yes | ||
3877(i) | WP | 22.8.6.7 [expected.object.monadic] | Incorrect constraints on const-qualified monadic overloads for std::expected | Yes | ||
3703(i) | WP | 22.8.7.1 [expected.void.general] | Missing requirements for expected<T, E> requires is_void<T> | Yes | 2 | |
3687(i) | WP | 22.8.7.4 [expected.void.assign] | expected<cv void, E> move constructor should move | Yes | ||
3940(i) | Tentatively Ready | 22.8.7.6 [expected.void.obs] | std::expected<void, E>::value() also needs E to be copy constructible | Yes | ||
2348(i) | Open | 22.9.2 [template.bitset] | charT('1') is not the wide equivalent of '1' | Yes | 3 | |
853(i) | C++11 | 22.9.2 [template.bitset] | to_string needs updating with zero and one | Yes | ||
1113(i) | C++11 | 22.9.2 [template.bitset] | bitset::to_string could be simplified | Yes | ||
1227(i) | C++11 | 22.9.2 [template.bitset] | <bitset> synopsis overspecified | Yes | ||
1250(i) | C++11 | 22.9.2 [template.bitset] | <bitset> still overspecified | Yes | ||
693(i) | CD1 | 22.9.2 [template.bitset] | std::bitset::all() missing |
Yes | ||
694(i) | CD1 | 22.9.2 [template.bitset] | std::bitset and long long |
Yes | ||
11(i) | TC1 | 22.9.2 [template.bitset] | Bitset minor problems | Yes | ||
1112(i) | NAD | 22.9.2 [template.bitset] | bitsets and new style for loop | Yes | ||
116(i) | Dup | 22.9.2 [template.bitset] | bitset cannot be constructed with a const char* | Yes | 778 | |
2250(i) | C++17 | 22.9.2.2 [bitset.cons] | Follow-up On Library Issue 2207 | Yes | 3 | |
1325(i) | C++11 | 22.9.2.2 [bitset.cons] | bitset | Yes | ||
396(i) | CD1 | 22.9.2.2 [bitset.cons] | what are characters zero and one | Yes | ||
457(i) | CD1 | 22.9.2.2 [bitset.cons] | bitset constructor: incorrect number of initialized bits | Yes | ||
778(i) | CD1 | 22.9.2.2 [bitset.cons] | std::bitset does not have any constructor taking a string literal | Yes | 116 | |
907(i) | C++11 | 22.9.2.3 [bitset.members] | Bitset's immutable element retrieval is inconsistently defined | Yes | ||
186(i) | CD1 | 22.9.2.3 [bitset.members] | bitset::set() second parameter should be bool | Yes | ||
434(i) | CD1 | 22.9.2.3 [bitset.members] | bitset::to_string() hard to use | Yes | ||
1168(i) | NAD Editorial | 22.9.2.3 [bitset.members] | Odd wording for bitset equality operators | Yes | ||
3199(i) | C++20 | 22.9.4 [bitset.operators] | istream >> bitset<0> fails | Yes | ||
303(i) | CD1 | 22.9.4 [bitset.operators] | Bitset input operator underspecified | Yes | ||
3805(i) | New | 22.10 [function.objects] | Expression evaluating to a call wrapper is a prvalue, not an object | No | 4 | |
2048(i) | C++14 | 22.10 [function.objects] | Unnecessary mem_fn overloads | Yes | ||
2149(i) | C++14 | 22.10 [function.objects] | Concerns about 20.8/5 | Yes | ||
185(i) | CD1 | 22.10 [function.objects] | Questionable use of term "inline" | Yes | ||
660(i) | CD1 | 22.10 [function.objects] | Missing Bitwise Operations | Yes | ||
1290(i) | Resolved | 22.10 [function.objects] | Don't require [u|bi]nary_function inheritance | Yes | ||
658(i) | Resolved | 22.10 [function.objects] | Two unspecified function comparators in [function.objects] | Yes | ||
1397(i) | Resolved | 22.10 [function.objects] | Deprecate '98 binders | Yes | ||
351(i) | NAD Editorial | 22.10 [function.objects] | unary_negate and binary_negate: struct or class? | Yes | ||
1398(i) | NAD | 22.10 [function.objects] | Users should be able to specialize functors without depending on whole <functional> header | Yes | ||
3202(i) | C++20 | 22.10.2 [functional.syn] | P0318R1 was supposed to be revised | Yes | 0 | |
3655(i) | WP | 22.10.4 [func.require] | The INVOKE operation and union types | Yes | 3 | |
2219(i) | C++17 | 22.10.4 [func.require] | INVOKE-ing a pointer to member with a reference_wrapper as the object expression | Yes | 2 | |
2387(i) | C++17 | 22.10.4 [func.require] | More nested types that must be accessible and unambiguous | Yes | ||
2486(i) | C++17 | 22.10.4 [func.require] | mem_fn() should be required to use perfect forwarding | Yes | 0 | |
1294(i) | C++11 | 22.10.4 [func.require] | Difference between callable wrapper and forwarding call wrapper unclear | Yes | ||
1295(i) | C++11 | 22.10.4 [func.require] | Contradictory call wrapper requirements | Yes | ||
1520(i) | C++11 | 22.10.4 [func.require] | INVOKE on member data pointer with too many arguments | Yes | ||
2926(i) | Resolved | 22.10.4 [func.require] | INVOKE(f, t1, t2,... tN) and INVOKE(f, t1, t2,... tN, R) are too similar | Yes | ||
2807(i) | C++17 | 22.10.5 [func.invoke] | std::invoke should use std::is_nothrow_callable | Yes | 3 | |
2690(i) | Resolved | 22.10.5 [func.invoke] | invoke<R> | Yes | ||
2894(i) | Resolved | 22.10.5 [func.invoke] | The function template std::apply() is required to be constexpr, but std::invoke() isn't | Yes | 3 | |
3046(i) | New | 22.10.6 [refwrap] | Do not require reference_wrapper to support non-referenceable function types | Yes | 3 | |
2981(i) | C++20 | 22.10.6 [refwrap] | Remove redundant deduction guides from standard library | Yes | 0 | |
2993(i) | C++20 | 22.10.6 [refwrap] | reference_wrapper<T> conversion from T&& | Yes | 3 | |
987(i) | C++11 | 22.10.6 [refwrap] | reference_wrapper and function types | Yes | ||
2017(i) | C++11 | 22.10.6 [refwrap] | std::reference_wrapper makes incorrect usage of std::result_of | Yes | ||
2022(i) | C++11 | 22.10.6 [refwrap] | reference_wrapper<T>::result_type is underspecified | Yes | ||
521(i) | CD1 | 22.10.6 [refwrap] | Garbled requirements for argument_type in reference_wrapper | Yes | ||
3041(i) | C++20 | 22.10.6.2 [refwrap.const] | Unnecessary decay in reference_wrapper | Yes | 0 | |
688(i) | C++11 | 22.10.6.2 [refwrap.const] | reference_wrapper, cref unsafe, allow binding to rvalues | Yes | ||
689(i) | CD1 | 22.10.6.2 [refwrap.const] | reference_wrapper constructor overly constrained | Yes | ||
3764(i) | WP | 22.10.6.5 [refwrap.invoke] | reference_wrapper::operator() should propagate noexcept | Yes | ||
2435(i) | C++17 | 22.10.6.5 [refwrap.invoke] | reference_wrapper::operator()'s Remark should be deleted | Yes | 4 | |
3146(i) | WP | 22.10.6.6 [refwrap.helpers] | Excessive unwrapping in std::ref/cref | Yes | 3 | |
2491(i) | New | 22.10.8 [comparisons] | std::less<T*> in constant expression | Yes | 3 | |
2547(i) | New | 22.10.8 [comparisons] | Container requirements (and other library text) should say "strict total order", not just "total order" | No | 3 | |
2450(i) | C++17 | 22.10.8 [comparisons] | (greater|less|greater_equal|less_equal)<void> do not yield a total order for pointers | Yes | 2 | |
2562(i) | C++17 | 22.10.8 [comparisons] | Consistent total ordering of pointers by comparison functors | Yes | 3 | |
284(i) | CD1 | 22.10.8 [comparisons] | unportable example in 20.3.7, p6 | Yes | ||
3530(i) | WP | 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 | ||
2767(i) | C++17 | 22.10.13 [func.not.fn] | not_fn call_wrapper can form invalid types | Yes | 0 | |
3184(i) | C++20 | 22.10.14 [func.bind.partial] | Inconsistencies in bind_front wording | Yes | 0 | |
520(i) | CD1 | 22.10.15 [func.bind] | Result_of and pointers to data members | Yes | ||
2010(i) | C++14 | 22.10.15.2 [func.bind.isbind] | is_* traits for binding operations can't be meaningfully specialized | Yes | ||
1071(i) | C++11 | 22.10.15.2 [func.bind.isbind] | is_bind_expression should derive from integral_constant<bool> | Yes | ||
2487(i) | C++17 | 22.10.15.4 [func.bind.bind] | bind() should be const-overloaded, not cv-overloaded | Yes | 2 | |
2545(i) | C++17 | 22.10.15.4 [func.bind.bind] | Simplify wording for bind without explicitly specified return type | Yes | 3 | |
2021(i) | C++14 | 22.10.15.4 [func.bind.bind] | Further incorrect usages of result_of | Yes | ||
817(i) | C++11 | 22.10.15.4 [func.bind.bind] | bind needs to be moved | Yes | ||
527(i) | CD1 | 22.10.15.4 [func.bind.bind] | tr1::bind has lost its Throws clause | Yes | ||
2957(i) | Resolved | 22.10.15.4 [func.bind.bind] | bind's specification doesn't apply the cv-qualification of the call wrapper to the callable object | Yes | 3 | |
816(i) | Resolved | 22.10.15.4 [func.bind.bind] | Should bind()'s returned functor have a nofail copy ctor when bind() is nofail? | Yes | ||
3824(i) | WP | 22.10.15.5 [func.bind.place] | Number of bind placeholders is underspecified | Yes | ||
2488(i) | C++17 | 22.10.15.5 [func.bind.place] | Placeholders should be allowed and encouraged to be constexpr | Yes | 2 | |
2489(i) | C++17 | 22.10.16 [func.memfn] | mem_fn() should be noexcept | Yes | 0 | |
920(i) | C++11 | 22.10.16 [func.memfn] | Ref-qualification support in the library | Yes | 1230 | |
3023(i) | Resolved | 22.10.16 [func.memfn] | Clarify unspecified call wrappers | Yes | 3 | |
1230(i) | Dup | 22.10.16 [func.memfn] | mem_fn and variadic templates | Yes | 920 | |
770(i) | CD1 | 22.10.17 [func.wrap] | std::function should use rvalue swap | Yes | ||
2233(i) | C++17 | 22.10.17.2 [func.wrap.badcall] | bad_function_call::what() unhelpful | Yes | 3 | |
2062(i) | C++17 | 22.10.17.3 [func.wrap.func] | Effect contradictions w/o no-throw guarantee of std::function swaps | Yes | 2 | |
2385(i) | C++17 | 22.10.17.3 [func.wrap.func] | function::assign allocator argument doesn't make sense | Yes | 2 | |
2393(i) | C++17 | 22.10.17.3 [func.wrap.func] | std::function's Callable definition is broken | Yes | 2 | |
2401(i) | C++17 | 22.10.17.3 [func.wrap.func] | std::function needs more noexcept | Yes | 0 | |
2420(i) | C++17 | 22.10.17.3 [func.wrap.func] | function<void(ArgTypes...)> does not discard the return value of the target object | Yes | 1 | |
1070(i) | C++11 | 22.10.17.3 [func.wrap.func] | Ambiguous move overloads in function | Yes | ||
1240(i) | C++11 | 22.10.17.3 [func.wrap.func] | Deleted comparison functions of std::function not needed | Yes | ||
1399(i) | C++11 | 22.10.17.3 [func.wrap.func] | function does not need an explicit default constructor | Yes | ||
769(i) | CD1 | 22.10.17.3 [func.wrap.func] | std::function should use nullptr_t instead of "unspecified-null-pointer-type" | Yes | ||
2370(i) | Resolved | 22.10.17.3 [func.wrap.func] | Operations involving type-erased allocators should not be noexcept in std::function | Yes | 3 | |
2501(i) | Resolved | 22.10.17.3 [func.wrap.func] | std::function requires POCMA/POCCA | Yes | 3 | |
2502(i) | Resolved | 22.10.17.3 [func.wrap.func] | std::function does not use allocator::construct | Yes | 3 | |
1023(i) | NAD Editorial | 22.10.17.3 [func.wrap.func] | Unclear inheritance relation for std::function | Yes | ||
644(i) | NAD | 22.10.17.3 [func.wrap.func] | Possible typos in 'function' description | Yes | ||
1024(i) | NAD Concepts | 22.10.17.3 [func.wrap.func] | std::function constructors overly generous | Yes | ||
1059(i) | NAD Concepts | 22.10.17.3 [func.wrap.func] | Usage of no longer existing FunctionType concept | Yes | ||
3493(i) | New | 22.10.17.3.2 [func.wrap.func.con] | The constructor of std::function taking an F is missing a constraint | Yes | 3 | |
3617(i) | WP | 22.10.17.3.2 [func.wrap.func.con] | function/packaged_task deduction guides and deducing this | Yes | 2 | |
2774(i) | WP | 22.10.17.3.2 [func.wrap.func.con] | std::function construction vs assignment | Yes | 3 | |
3238(i) | C++20 | 22.10.17.3.2 [func.wrap.func.con] | Insufficiently-defined behavior of std::function deduction guides | Yes | ||
2850(i) | C++17 | 22.10.17.3.2 [func.wrap.func.con] | std::function move constructor does unnecessary work | Yes | 0 | |
2565(i) | C++17 | 22.10.17.3.2 [func.wrap.func.con] | std::function's move constructor should guarantee nothrow for reference_wrappers and function pointers | Yes | 0 | |
2781(i) | C++17 | 22.10.17.3.2 [func.wrap.func.con] | Contradictory requirements for std::function and std::reference_wrapper | Yes | 0 | |
2132(i) | C++14 | 22.10.17.3.2 [func.wrap.func.con] | std::function ambiguity | Yes | 2 | |
1287(i) | C++11 | 22.10.17.3.2 [func.wrap.func.con] | std::function requires CopyConstructible target object | Yes | ||
1288(i) | C++11 | 22.10.17.3.2 [func.wrap.func.con] | std::function assignment from rvalues | Yes | ||
1292(i) | C++11 | 22.10.17.3.2 [func.wrap.func.con] | std::function should support all callable types | Yes | ||
1400(i) | C++11 | 22.10.17.3.2 [func.wrap.func.con] | FCD function does not need an explicit default constructor | Yes | ||
610(i) | CD1 | 22.10.17.3.2 [func.wrap.func.con] | Suggested non-normative note for C++0x | Yes | ||
2813(i) | Resolved | 22.10.17.3.2 [func.wrap.func.con] | std::function should not return dangling references | Yes | 2 | |
2386(i) | NAD | 22.10.17.3.2 [func.wrap.func.con] | function::operator= handles allocators incorrectly | Yes | 1 | |
1258(i) | Resolved | 22.10.17.3.3 [func.wrap.func.mod] | std::function Effects clause impossible to satisfy | Yes | ||
1333(i) | C++11 | 22.10.17.3.5 [func.wrap.func.inv] | Missing forwarding during std::function invocation | Yes | ||
815(i) | Resolved | 22.10.17.3.5 [func.wrap.func.inv] | std::function and reference_closure do not use perfect forwarding | Yes | ||
2591(i) | C++17 | 22.10.17.3.6 [func.wrap.func.targ] | std::function's member template target() should not lead to undefined behaviour | Yes | 3 | |
633(i) | NAD Editorial | 22.10.17.3.6 [func.wrap.func.targ] | Return clause mentions undefined "type()" | Yes | ||
3680(i) | New | 22.10.17.4.3 [func.wrap.move.ctor] | Constructor of move_only_function with empty ref-qualifier is over-constrained | Yes | 2 | |
3642(i) | New | 22.10.17.4.3 [func.wrap.move.ctor] | move_only_function assignment operators seem to be defined suboptimal | Yes | 3 | |
3512(i) | New | 22.10.19 [unord.hash] | Incorrect exception safety guarantee for unordered containers | No | 3 | |
1025(i) | NAD Future | 22.10.19 [unord.hash] | The library should provide more specializations for std::hash | Yes | ||
2119(i) | C++17 | 22.10.19 [unord.hash] | Missing hash specializations for extended integer types | Yes | 3 | |
2148(i) | C++14 | 22.10.19 [unord.hash] | Hashing enums should be supported directly by std::hash | Yes | ||
978(i) | C++11 | 22.10.19 [unord.hash] | Hashing smart pointers | Yes | ||
1182(i) | C++11 | 22.10.19 [unord.hash] | Unfortunate hash dependencies | Yes | ||
1245(i) | C++11 | 22.10.19 [unord.hash] | std::hash<string> & co | Yes | ||
848(i) | CD1 | 22.10.19 [unord.hash] | Missing std::hash specializations for std::bitset/std::vector<bool> | Yes | ||
2803(i) | Resolved | 22.10.19 [unord.hash] | hash for arithmetic, pointer and standard library types should not throw | Yes | 3 | |
2817(i) | Resolved | 22.10.19 [unord.hash] | std::hash for nullptr_t | Yes | ||
2543(i) | Resolved | 22.10.19 [unord.hash] | LWG 2148 (hash support for enum types) seems under-specified | Yes | 2 | |
1317(i) | NAD | 22.10.19 [unord.hash] | make_hash | Yes | ||
1072(i) | NAD Concepts | 22.10.19 [unord.hash] | Is std::hash a constrained template or not? | Yes | ||
2144(i) | C++14 | 22.11 [type.index] | Missing noexcept specification in type_index | Yes | ||
1078(i) | NAD Concepts | 22.11 [type.index] | DE-17: Remove class type_index | Yes | ||
2909(i) | NAD | 22.12.3 [execpol.type] | User specializations of is_execution_policy should be ill-formed | Yes | ||
3266(i) | C++20 | 22.13.1 [charconv.syn] | to_chars(bool) should be deleted | Yes | 0 | |
3373(i) | C++20 | 22.13.1 [charconv.syn] | {to,from}_chars_result and format_to_n_result need the "we really mean what we say" wording | Yes | 0 | |
3456(i) | New | 22.13.3 [charconv.from.chars] | Pattern used by std::from_chars is underspecified | Yes | 3 | |
3081(i) | Open | 22.13.3 [charconv.from.chars] | Floating point from_chars API does not distinguish between overflow and underflow | Yes | 2 | |
3082(i) | Open | 22.13.3 [charconv.from.chars] | from_chars specification regarding floating point rounding is inconsistent | Yes | 2 | |
3080(i) | C++20 | 22.13.3 [charconv.from.chars] | Floating point from_chars pattern specification breaks round-tripping | Yes | 0 | |
3651(i) | New | 22.14 [format] | Unspecified lifetime guarantees for the format string | No | 3 | |
3641(i) | New | 22.14.1 [format.syn] | Add operator== to format_to_n_result | Yes | 3 | |
3243(i) | C++20 | 22.14.2 [format.string] | std::format and negative zeroes | Yes | 2 | |
3251(i) | C++20 | 22.14.2 [format.string] | Are std::format alignment specifiers applied to string arguments? | Yes | 2 | |
3939(i) | New | 22.14.2.2 [format.string.std] | §[format.string.std] char is not formatted as a character when charT is wchar_t | No | 3 | |
3644(i) | New | 22.14.2.2 [format.string.std] | std::format does not define "integer presentation type" | Yes | 2 | |
3586(i) | New | 22.14.2.2 [format.string.std] | Formatting character alignment inconsistencies | Yes | 2 | |
3720(i) | WP | 22.14.2.2 [format.string.std] | Restrict the valid types of arg-id for width and precision in std-format-spec | Yes | 2 | |
3721(i) | WP | 22.14.2.2 [format.string.std] | Allow an arg-id with a value of zero for width in std-format-spec | Yes | 3 | |
3612(i) | WP | 22.14.2.2 [format.string.std] | Inconsistent pointer alignment in std::format | Yes | ||
3648(i) | WP | 22.14.2.2 [format.string.std] | format should not print bool with 'c' | Yes | ||
3242(i) | C++20 | 22.14.2.2 [format.string.std] | std::format: missing rules for arg-id in width and precision | Yes | 1 | |
3248(i) | C++20 | 22.14.2.2 [format.string.std] | std::format #b, #B, #o, #x, and #X presentation types misformat negative numbers | Yes | 2 | |
3250(i) | C++20 | 22.14.2.2 [format.string.std] | std::format: # (alternate form) for NaN and inf | Yes | 0 | |
3290(i) | C++20 | 22.14.2.2 [format.string.std] | Are std::format field widths code units, code points, or something else? | Yes | ||
3327(i) | C++20 | 22.14.2.2 [format.string.std] | Format alignment specifiers vs. text direction | Yes | 0 | |
3412(i) | Resolved | 22.14.2.2 [format.string.std] | §[format.string.std] references to "Unicode encoding" unclear | Yes | 3 | |
3576(i) | Resolved | 22.14.2.2 [format.string.std] | Clarifying fill character in std::format | Yes | 2 | |
3639(i) | Resolved | 22.14.2.2 [format.string.std] | Handling of fill character width is underspecified in std::format | Yes | 3 | |
3780(i) | Resolved | 22.14.2.2 [format.string.std] | format's width estimation is too approximate and not forward compatible | Yes | 3 | |
3619(i) | WP | 22.14.5 [format.functions] | Specification of vformat_to contains ill-formed formatted_size calls | Yes | ||
3539(i) | WP | 22.14.5 [format.functions] | format_to must not copy models of output_iterator<const charT&> | Yes | ||
3340(i) | C++20 | 22.14.5 [format.functions] | Formatting functions should throw on argument/format string mismatch in §[format.functions] | Yes | ||
3372(i) | C++20 | 22.14.5 [format.functions] | vformat_to should not try to deduce Out twice | Yes | 0 | |
3336(i) | Resolved | 22.14.5 [format.functions] | How does std::vformat handle exception thrown by formatters? | Yes | 2 | |
3776(i) | LEWG | 22.14.6.1 [formatter.requirements] | Avoid parsing format-spec if it is not present or empty | Yes | 3 | |
3636(i) | WP | 22.14.6.1 [formatter.requirements] | formatter<T>::format should be const-qualified | Yes | 1 | |
3462(i) | WP | 22.14.6.1 [formatter.requirements] | §[formatter.requirements]: Formatter requirements forbid use of fc.arg() | Yes | 3 | |
3925(i) | Tentatively Ready | 22.14.6.2 [format.formattable] | Concept formattable's definition is incorrect | Yes | ||
3943(i) | New | 22.14.6.2 [format.formattable] | Clarify lifetime requirements of BasicFormatter and Formatter | Yes | 3 | |
3806(i) | NAD | 22.14.6.2 [format.formattable] | Should concept formattable<T, charT> default to char? | Yes | 2 | |
3706(i) | New | 22.14.6.3 [format.formatter.spec] | How does std::format work with character arrays of unknown bound? | No | 3 | |
3944(i) | SG16 | 22.14.6.3 [format.formatter.spec] | Formatters converting sequences of char to sequences of wchar_t | No | 3 | |
3833(i) | WP | 22.14.6.3 [format.formatter.spec] | Remove specialization template<size_t N> struct formatter<const charT[N], charT> | Yes | 2 | |
3701(i) | WP | 22.14.6.3 [format.formatter.spec] | Make formatter<remove_cvref_t<const charT[N]>, charT> requirement explicit | Yes | ||
3825(i) | WP | 22.14.6.5 [format.parse.ctx] | Missing compile-time argument id check in basic_format_parse_context::next_arg_id | Yes | ||
3654(i) | WP | 22.14.6.6 [format.context] | basic_format_context::arg(size_t) should be noexcept | Yes | ||
3567(i) | WP | 22.14.6.6 [format.context] | Formatting move-only iterators take two | Yes | ||
3892(i) | New | 22.14.7.2 [format.range.formatter] | Incorrect formatting of nested ranges and tuples | Yes | 2 | |
3839(i) | WP | 22.14.7.2 [format.range.formatter] | range_formatter's set_separator, set_brackets, and underlying functions should be noexcept | Yes | ||
3631(i) | WP | 22.14.8.1 [format.arg] | basic_format_arg(T&&) should use remove_cvref_t<T> throughout | Yes | 3 | |
3540(i) | WP | 22.14.8.1 [format.arg] | §[format.arg] There should be no const in basic_format_arg(const T* p) | Yes | ||
3542(i) | WP | 22.14.8.1 [format.arg] | basic_format_arg mis-handles basic_string_view with custom traits | Yes | ||
3246(i) | C++20 | 22.14.8.1 [format.arg] | What are the constraints on the template parameter of basic_format_arg? | Yes | 0 | |
3371(i) | C++20 | 22.14.8.1 [format.arg] | visit_format_arg and make_format_args are not hidden friends | Yes | 0 | |
3718(i) | Resolved | 22.14.8.1 [format.arg] | P2418R2 broke the overload resolution for std::basic_format_arg | Yes | 2 | |
3544(i) | WP | 22.14.8.2 [format.arg.store] | format-arg-store::args is unintentionally not exposition-only | Yes | 3 | |
3810(i) | WP | 22.14.8.3 [format.args] | CTAD for std::basic_format_args | Yes | 3 | |
3473(i) | WP | 22.14.8.3 [format.args] | Normative encouragement in non-normative note | Yes | 0 | |
3656(i) | WP | 22.15.5 [bit.pow.two] | Inconsistent bit operations returning a count | Yes | 3 |
(view only non-Ready open issues)
Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates |
7(i) | TC1 | 23 [strings] | String clause minor problems | Yes | ||
2841(i) | Resolved | 23 [strings] | Use of "Equivalent to" in [strings] | Yes | 3 | |
85(i) | NAD | 23 [strings] | String char types | Yes | ||
1081(i) | NAD Concepts | 23 [strings] | basic_string needs to be a concept-constrained template | Yes | ||
2513(i) | New | 23.1 [strings.general] | Missing requirements for basic_string::value_type | No | 4 | |
1170(i) | C++11 | 23.1 [strings.general] | String char-like types no longer PODs | Yes | ||
3695(i) | NAD | 23.1 [strings.general] | The standard-layout property of char-like types serves for nothing | Yes | 4 | |
2994(i) | Tentatively Ready | 23.2 [char.traits] | Needless UB for basic_string and basic_string_view | Yes | 3 | |
830(i) | NAD Editorial | 23.2 [char.traits] | Incomplete list of char_traits specializations | Yes | ||
570(i) | NAD | 23.2 [char.traits] | Request adding additional explicit specializations of char_traits | Yes | ||
3694(i) | New | 23.2.2 [char.traits.require] | Should traits_type::length be customizable? | No | 4 | |
3085(i) | WP | 23.2.2 [char.traits.require] | char_traits::copy precondition too weak | Yes | 2 | |
3518(i) | WP | 23.2.2 [char.traits.require] | Exception requirements on char trait operations unclear | Yes | ||
335(i) | CD1 | 23.2.2 [char.traits.require] | minor issue with char_traits, table 37 | Yes | ||
352(i) | CD1 | 23.2.3 [char.traits.typedefs] | missing fpos requirements | Yes | ||
1200(i) | NAD | 23.2.3 [char.traits.typedefs] | "surprising" char_traits<T>::int_type requirements | Yes | ||
3942(i) | New | 23.2.4 [char.traits.specializations] | Inconsistent use of const char_type& in standard specializations of std::char_traits | Yes | 3 | |
709(i) | CD1 | 23.2.4 [char.traits.specializations] | char_traits::not_eof has wrong signature | Yes | ||
2232(i) | Resolved | 23.2.4 [char.traits.specializations] | [CD] The char_traits specializations should declare their length(), compare(), and find() members constexpr | Yes | ||
831(i) | NAD Editorial | 23.2.4 [char.traits.specializations] | wrong type for not_eof() | Yes | ||
467(i) | CD1 | 23.2.4.2 [char.traits.specializations.char] | char_traits::lt(), compare(), and memcmp() | Yes | ||
2959(i) | New | 23.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 | 23.2.4.4 [char.traits.specializations.char16.t] | Fixing remaining dead links to POS_T and OFF_T | Yes | 1444 | |
57(i) | TC1 | 23.2.4.6 [char.traits.specializations.wchar.t] | Mistake in char_traits | Yes | ||
2883(i) | LEWG | 23.3 [string.view] | The standard library should provide string_view parameters instead or in addition for functions defined with char const * or string const & as parameter types. | No | ||
2778(i) | C++17 | 23.3 [string.view] | basic_string_view is missing constexpr | Yes | 0 | |
2780(i) | Resolved | 23.3 [string.view] | basic_string_view::copy is missing constexpr | Yes | 2 | |
3457(i) | New | 23.3.3 [string.view.template] | *this is not invalidated | Yes | 3 | |
2938(i) | Resolved | 23.3.3 [string.view.template] | basic_string_view::const_iterator should be literal types | Yes | 2 | |
3068(i) | NAD | 23.3.3 [string.view.template] | Forbid assigning an rvalue basic_string to basic_string_view | Yes | 2 | |
3857(i) | WP | 23.3.3.2 [string.view.cons] | basic_string_view should allow explicit conversion when only traits vary | Yes | ||
3573(i) | WP | 23.3.3.2 [string.view.cons] | Missing Throws element for basic_string_view(It begin, End end) | Yes | ||
3581(i) | WP | 23.3.3.2 [string.view.cons] | The range constructor makes basic_string_view not trivially move constructible | Yes | ||
2826(i) | C++17 | 23.3.3.4 [string.view.iterators] | string_view iterators use old wording | Yes | 0 | |
3040(i) | C++20 | 23.3.3.8 [string.view.ops] | basic_string_view::starts_with Effects are incorrect | Yes | 0 | |
2777(i) | C++17 | 23.3.3.8 [string.view.ops] | basic_string_view::copy should use char_traits::copy | Yes | 0 | |
3432(i) | WP | 23.3.4 [string.view.comparison] | Missing requirement for comparison_category | Yes | 0 | |
2755(i) | C++17 | 23.3.5 [string.view.io] | §[string.view.io] uses non-existent basic_string_view::to_string function | Yes | 0 | |
2791(i) | Resolved | 23.3.6 [string.view.hash] | string_view objects and strings should yield the same hash values | Yes | ||
3339(i) | New | 23.4.3 [basic.string] | Move-constructed empty-container capacity | No | 3 | |
3451(i) | New | 23.4.3 [basic.string] | Inconsistently explicit deduction guides | Yes | 3 | |
3075(i) | C++20 | 23.4.3 [basic.string] | basic_string needs deduction guides from basic_string_view | Yes | ||
2063(i) | C++17 | 23.4.3 [basic.string] | Contradictory requirements for string move assignment | Yes | 3 | |
2064(i) | C++14 | 23.4.3 [basic.string] | More noexcept issues in basic_string | Yes | ||
2268(i) | C++14 | 23.4.3 [basic.string] | Setting a default argument in the declaration of a member function assign of std::basic_string | Yes | ||
876(i) | C++11 | 23.4.3 [basic.string] | basic_string access operations should give stronger guarantees | Yes | ||
180(i) | CD1 | 23.4.3 [basic.string] | Container member iterator arguments constness has unintended consequences | Yes | ||
263(i) | CD1 | 23.4.3 [basic.string] | Severe restriction on basic_string reference counting | Yes | ||
530(i) | CD1 | 23.4.3 [basic.string] | Must elements of a string be contiguous? | Yes | ||
534(i) | CD1 | 23.4.3 [basic.string] | Missing basic_string members | Yes | ||
42(i) | TC1 | 23.4.3 [basic.string] | String ctors specify wrong default allocator | Yes | ||
83(i) | TC1 | 23.4.3 [basic.string] | String::npos vs. string::max_size() | Yes | 89 | |
209(i) | TC1 | 23.4.3 [basic.string] | basic_string declarations inconsistent | Yes | ||
2836(i) | Resolved | 23.4.3 [basic.string] | More string operations should be noexcept | Yes | 2 | |
2318(i) | Resolved | 23.4.3 [basic.string] | basic_string's wording has confusing relics from the copy-on-write era | Yes | 4 | |
2391(i) | Resolved | 23.4.3 [basic.string] | basic_string is missing non-const data() | Yes | 3 | |
718(i) | NAD Editorial | 23.4.3 [basic.string] | basic_string is not a sequence | Yes | ||
3165(i) | NAD | 23.4.3 [basic.string] | All starts_with() overloads should be called "begins_with" | Yes | 2 | |
2372(i) | NAD | 23.4.3 [basic.string] | Assignment from int to std::string | Yes | 4 | |
4(i) | NAD | 23.4.3 [basic.string] | basic_string size_type and difference_type should be implementation defined |
Yes | ||
614(i) | NAD | 23.4.3 [basic.string] | std::string allocator requirements still inconsistent | Yes | ||
2084(i) | NAD | 23.4.3 [basic.string] | basic_string use of charT* | Yes | ||
3650(i) | WP | 23.4.3.1 [basic.string.general] | Are std::basic_string's iterator and const_iterator constexpr iterators? | Yes | ||
2861(i) | C++17 | 23.4.3.2 [string.require] | basic_string should require that charT match traits::char_type | Yes | ||
2760(i) | C++17 | 23.4.3.2 [string.require] | non-const basic_string::data should not invalidate iterators | Yes | ||
2003(i) | C++14 | 23.4.3.2 [string.require] | String exception inconsistency in erase. | Yes | 0 | |
847(i) | C++11 | 23.4.3.2 [string.require] | string exception safety guarantees | Yes | ||
301(i) | CD1 | 23.4.3.2 [string.require] | basic_string template ctor effects clause omits allocator argument | Yes | ||
86(i) | TC1 | 23.4.3.2 [string.require] | String constructors don't describe exceptions | Yes | ||
2151(i) | Resolved | 23.4.3.2 [string.require] | basic_string<>::swap semantics ignore allocators | Yes | 3 | |
466(i) | NAD | 23.4.3.2 [string.require] | basic_string ctor should prevent null pointer error | Yes | ||
3663(i) | New | 23.4.3.3 [string.cons] | basic_string(const T&, const Alloc&) turns moves into copies | Yes | 3 | |
2946(i) | C++20 | 23.4.3.3 [string.cons] | LWG 2758's resolution missed further corrections | Yes | 2 | |
3076(i) | C++20 | 23.4.3.3 [string.cons] | basic_string CTAD ambiguity | Yes | ||
2742(i) | C++17 | 23.4.3.3 [string.cons] | Inconsistent string interface taking string_view | Yes | 1 | |
2583(i) | C++17 | 23.4.3.3 [string.cons] | There is no way to supply an allocator for basic_string(str, pos) | Yes | 0 | |
2069(i) | C++14 | 23.4.3.3 [string.cons] | Inconsistent exception spec for basic_string move constructor | Yes | ||
2235(i) | C++14 | 23.4.3.3 [string.cons] | Undefined behavior without proper requirements on basic_string constructors | Yes | ||
3111(i) | Resolved | 23.4.3.3 [string.cons] | Too strong precondition on basic_string constructor |
Yes | 2 | |
3033(i) | NAD Editorial | 23.4.3.3 [string.cons] | basic_string move ctor is underspecified | Yes | ||
2319(i) | NAD | 23.4.3.3 [string.cons] | basic_string's move constructor should not be noexcept | Yes | 1 | |
2822(i) | NAD | 23.4.3.3 [string.cons] | Resolution for LWG 2742 introduces ambiguities | Yes | ||
2580(i) | NAD | 23.4.3.3 [string.cons] | Who is definitive: operator= or assign? | Yes | 4 | |
2402(i) | NAD | 23.4.3.3 [string.cons] | basic_string(const basic_string& str, size_type pos, size_type n = npos) shouldn't use Allocator() | Yes | 3 | |
3311(i) | Dup | 23.4.3.3 [string.cons] | basic_string::operator=(charT c) should be constrained | Yes | ||
1192(i) | C++11 | 23.4.3.4 [string.iterators] | basic_string missing definitions for cbegin / cend / crbegin / crend | Yes | ||
3645(i) | WP | 23.4.3.5 [string.capacity] | resize_and_overwrite is overspecified to call its callback with lvalues | Yes | 2 | |
3004(i) | C++20 | 23.4.3.5 [string.capacity] | §[string.capacity] and §[vector.capacity] should specify time complexity for capacity() | Yes | 0 | |
2834(i) | C++17 | 23.4.3.5 [string.capacity] | Resolution LWG 2223 is missing wording about end iterators | Yes | 0 | |
259(i) | CD1 | 23.4.3.5 [string.capacity] | basic_string::operator[] and const correctness | Yes | ||
2968(i) | Resolved | 23.4.3.5 [string.capacity] | Inconsistencies between basic_string reserve and vector/unordered_map/unordered_set reserve functions | Yes | 3 | |
3579(i) | NAD | 23.4.3.5 [string.capacity] | Complexity guarantees for resize() and append() functions across the library | Yes | 3 | |
104(i) | NAD | 23.4.3.5 [string.capacity] | Description of basic_string::operator[] is unclear | Yes | ||
2475(i) | C++17 | 23.4.3.6 [string.access] | Allow overwriting of std::basic_string terminator with charT() to allow cleaner interoperation with legacy APIs | Yes | 3 | |
2207(i) | C++14 | 23.4.3.6 [string.access] | basic_string::at should not have a Requires clause | Yes | ||
84(i) | NAD | 23.4.3.6 [string.access] | Ambiguity with string::insert() | Yes | ||
3662(i) | New | 23.4.3.7.2 [string.append] | basic_string::append/assign(NTBS, pos, n) suboptimal | Yes | 3 | |
2788(i) | C++17 | 23.4.3.7.2 [string.append] | basic_string range mutators unintentionally require a default constructible allocator | Yes | 2 | |
2758(i) | C++17 | 23.4.3.7.3 [string.assign] | std::string{}.assign("ABCDE", 0, 1) is ambiguous | Yes | 1 | |
2579(i) | C++17 | 23.4.3.7.3 [string.assign] | Inconsistency wrt Allocators in basic_string assignment vs. basic_string::assign | Yes | 0 | |
2929(i) | Resolved | 23.4.3.7.3 [string.assign] | basic_string misuses "Effects: Equivalent to" | Yes | 3 | |
141(i) | TC1 | 23.4.3.7.4 [string.insert] | basic_string::find_last_of, find_last_not_of say pos instead of xpos | Yes | ||
2757(i) | Resolved | 23.4.3.7.4 [string.insert] | std::string{}.insert(3, "ABCDE", 0, 1) is ambiguous | Yes | 1 | |
88(i) | NAD | 23.4.3.7.4 [string.insert] | Inconsistency between string::insert() and string::append() | Yes | ||
377(i) | NAD | 23.4.3.7.4 [string.insert] | basic_string::insert and length_error | Yes | ||
89(i) | Dup | 23.4.3.7.4 [string.insert] | Missing throw specification for string::insert() and string::replace() | Yes | 83 | |
428(i) | CD1 | 23.4.3.7.5 [string.erase] | string::erase(iterator) validity | Yes | ||
27(i) | TC1 | 23.4.3.7.5 [string.erase] | String::erase(range) yields wrong iterator | Yes | ||
1323(i) | C++11 | 23.4.3.7.6 [string.replace] | basic_string::replace should use const_iterator | Yes | ||
368(i) | NAD Editorial | 23.4.3.7.6 [string.replace] | basic_string::replace has two "Throws" paragraphs | Yes | ||
403(i) | CD1 | 23.4.3.7.8 [string.swap] | basic_string::swap should not throw exceptions | Yes | ||
535(i) | CD1 | 23.4.3.7.8 [string.swap] | std::string::swap specification poorly worded | Yes | ||
5(i) | TC1 | 23.4.3.7.8 [string.swap] | String::compare specification questionable | Yes | 87 | |
87(i) | Dup | 23.4.3.7.8 [string.swap] | Error in description of string::compare() | Yes | 5 | |
3752(i) | NAD | 23.4.3.8.3 [string.substr] | Should string::substr forward the allocator to the newly created string? | Yes | ||
2771(i) | C++17 | 23.4.3.8.4 [string.compare] | Broken Effects of some basic_string::compare functions in terms of basic_string_view | Yes | 1 | |
1138(i) | C++11 | 23.4.4.1 [string.op.plus] | Unusual return value for operator+ | Yes | ||
2852(i) | NAD | 23.4.4.2 [string.cmp] | Specifications of operator== for std::basic_strings and std::basic_string_views are difficult to conform to | Yes | 2 | |
2011(i) | C++14 | 23.4.4.4 [string.io] | Unexpected output required of strings | Yes | ||
91(i) | CD1 | 23.4.4.4 [string.io] | Description of operator>> and getline() for string<> might cause endless loop | Yes | ||
435(i) | CD1 | 23.4.4.4 [string.io] | bug in DR 25 | Yes | ||
586(i) | CD1 | 23.4.4.4 [string.io] | string inserter not a formatted function | Yes | ||
824(i) | CD1 | 23.4.4.4 [string.io] | rvalue ref issue with basic_string inserter | Yes | ||
25(i) | TC1 | 23.4.4.4 [string.io] | String operator<< uses width() value wrong | Yes | 67 | |
90(i) | TC1 | 23.4.4.4 [string.io] | Incorrect description of operator >> for strings | Yes | ||
211(i) | TC1 | 23.4.4.4 [string.io] | operator>>(istream&, string&) doesn't set failbit | Yes | ||
2535(i) | NAD | 23.4.4.4 [string.io] | Inconsistency between ostream::write and ostream::operator<< | Yes | 2 | |
67(i) | Dup | 23.4.4.4 [string.io] | Setw useless for strings | Yes | 25 | |
3837(i) | New | 23.4.4.5 [string.erasure] | std::erase_if overloads for non-associative containers should move (and not copy) their predicate object | Yes | 3 | |
2403(i) | C++17 | 23.4.5 [string.conversions] | stof() should call strtof() and wcstof() | Yes | 2 | |
2009(i) | C++14 | 23.4.5 [string.conversions] | Reporting out-of-bound values on numeric string conversions | Yes | ||
1261(i) | C++11 | 23.4.5 [string.conversions] | Insufficent overloads for to_string / to_wstring | Yes | ||
771(i) | CD1 | 23.4.5 [string.conversions] | Impossible throws clause in [string.conversions] | Yes | ||
772(i) | CD1 | 23.4.5 [string.conversions] | Impossible return clause in [string.conversions] | Yes | ||
2270(i) | NAD | 23.4.5 [string.conversions] | Inconsistent to_string overloads | Yes | ||
3705(i) | WP | 23.4.6 [basic.string.hash] | Hashability shouldn't depend on basic_string's allocator | Yes | ||
2978(i) | C++20 | 23.4.6 [basic.string.hash] | Hash support for pmr::string and friends | Yes | 0 | |
2355(i) | NAD | 23.4.7 [basic.string.literals] | "s" UDL suffix should be reserved for a compile-time string library type | Yes | 1 | |
2237(i) | New | 23.5 [c.strings] | <cuchar> macros | No | 4 | |
2238(i) | Open | 23.5 [c.strings] | Problematic iterator-pair constructor of containers | No | 3 | |
2482(i) | C++17 | 23.5 [c.strings] | §[c.strings] Table 73 mentions nonexistent functions | Yes | ||
345(i) | CD1 | 23.5 [c.strings] | type tm in <cwchar> | Yes | ||
615(i) | NAD Editorial | 23.5 [c.strings] | Inconsistencies in Section 21.4 | Yes |
(view only non-Ready open issues)
Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates |
2307(i) | LEWG | 24 [containers] | Should the Standard Library use explicit only when necessary? | No | 2 | |
2885(i) | LEWG | 24 [containers] | The relational operators of optional and variant completely reflect the semantics of the element types — this is inconsistent with other types in the library | No | ||
2884(i) | LEWG | 24 [containers] | Relational operators for containers should sfinae; if the underlying type is not comparable, neither should the container be | No | ||
2193(i) | C++14 | 24 [containers] | Default constructors for standard library containers are explicit | Yes | 1 | |
774(i) | C++11 | 24 [containers] | Member swap undefined for most containers | Yes | ||
868(i) | C++11 | 24 [containers] | Default construction and value-initialization | Yes | ||
883(i) | C++11 | 24 [containers] | swap circular definition | Yes | ||
2913(i) | Resolved | 24 [containers] | Containers need deduction guides | Yes | ||
767(i) | Resolved | 24 [containers] | Forwarding and backward compatibility | Yes | ||
1242(i) | NAD | 24 [containers] | Enable SCARY iterators | Yes | ||
97(i) | NAD | 24 [containers] | Insert inconsistent definition | Yes | ||
470(i) | NAD | 24 [containers] | accessing containers from their elements' special functions | Yes | ||
3059(i) | New | 24.2 [container.requirements] | Wrong requirements for map-like associative container assignment? | No | 3 | |
2261(i) | C++17 | 24.2 [container.requirements] | Are containers required to use their 'pointer' type internally? | Yes | 2 | |
704(i) | C++11 | 24.2 [container.requirements] | MoveAssignable requirement for container value type overly strict | Yes | ||
861(i) | C++11 | 24.2 [container.requirements] | Incomplete specification of EqualityComparable for std::forward_list | Yes | ||
1416(i) | C++11 | 24.2 [container.requirements] | forward_list::erase_after should not be allowed to throw | Yes | ||
179(i) | CD1 | 24.2 [container.requirements] | Comparison of const_iterators to iterators doesn't work | Yes | ||
276(i) | CD1 | 24.2 [container.requirements] | Assignable requirement for container value type overly strict | Yes | ||
322(i) | CD1 | 24.2 [container.requirements] | iterator and const_iterator should have the same value type | Yes | ||
371(i) | CD1 | 24.2 [container.requirements] | Stability of multiset and multimap member functions | Yes | ||
589(i) | CD1 | 24.2 [container.requirements] | Requirements on iterators of member template functions of containers | Yes | 536 | |
675(i) | CD1 | 24.2 [container.requirements] | Move assignment of containers | Yes | ||
759(i) | CD1 | 24.2 [container.requirements] | A reference is not an object | Yes | ||
766(i) | CD1 | 24.2 [container.requirements] | Inconsistent exception guarantees between ordered and unordered associative containers | Yes | ||
842(i) | CD1 | 24.2 [container.requirements] | ConstructibleAsElement and bit containers | Yes | ||
51(i) | TC1 | 24.2 [container.requirements] | Requirement to not invalidate iterators missing | Yes | ||
760(i) | NAD | 24.2 [container.requirements] | The emplace issue | Yes | 2 | |
279(i) | NAD | 24.2 [container.requirements] | const and non-const iterators should have equivalent typedefs | Yes | ||
632(i) | NAD | 24.2 [container.requirements] | Time complexity of size() for std::set | Yes | ||
1330(i) | NAD | 24.2 [container.requirements] | Move container requirements into requirements tables | Yes | ||
479(i) | Dup | 24.2 [container.requirements] | Container requirements and placement new | Yes | 580 | |
536(i) | Dup | 24.2 [container.requirements] | Container iterator constructor and explicit convertibility | Yes | 589 | |
2269(i) | New | 24.2.2.1 [container.requirements.general] | Container iterators and argument-dependent lookup | No | 4 | |
2321(i) | Open | 24.2.2.1 [container.requirements.general] | Moving containers should (usually) be required to preserve iterators | Yes | 3 | |
1521(i) | Open | 24.2.2.1 [container.requirements.general] | Requirements on internal pointer representations in containers | Yes | 3 | |
3028(i) | WP | 24.2.2.1 [container.requirements.general] | Container requirements tables should distinguish const and non-const variables | Yes | 3 | |
3352(i) | C++20 | 24.2.2.1 [container.requirements.general] | strong_equality isn't a thing | Yes | 1 | |
2218(i) | C++17 | 24.2.2.1 [container.requirements.general] | Unclear how containers use allocator_traits::construct() | Yes | 3 | |
2448(i) | C++17 | 24.2.2.1 [container.requirements.general] | Non-normative Container destructor specification | Yes | 0 | |
2794(i) | C++17 | 24.2.2.1 [container.requirements.general] | Missing requirements for allocator pointers | Yes | 0 | |
2177(i) | C++14 | 24.2.2.1 [container.requirements.general] | Requirements on Copy/MoveInsertable | Yes | ||
2182(i) | C++14 | 24.2.2.1 [container.requirements.general] | Container::[const_]reference types are misleadingly specified | Yes | 0 | |
2308(i) | C++14 | 24.2.2.1 [container.requirements.general] | Clarify container destructor requirements w.r.t. std::array | Yes | 0 | |
2320(i) | C++14 | 24.2.2.1 [container.requirements.general] | select_on_container_copy_construction() takes allocators, not containers | Yes | 0 | |
2105(i) | C++14 | 24.2.2.1 [container.requirements.general] | Inconsistent requirements on const_iterator's value_type | Yes | ||
2211(i) | C++14 | 24.2.2.1 [container.requirements.general] | Replace ambiguous use of "Allocator" in container requirements | Yes | ||
2257(i) | C++14 | 24.2.2.1 [container.requirements.general] | Simplify container requirements with the new algorithms | Yes | ||
1034(i) | C++11 | 24.2.2.1 [container.requirements.general] | Clarify generality of Container Requirement tables | Yes | ||
1319(i) | C++11 | 24.2.2.1 [container.requirements.general] | Containers should require an iterator that is at least a Forward Iterator | Yes | ||
985(i) | Resolved | 24.2.2.1 [container.requirements.general] | Allowing throwing move | Yes | ||
580(i) | NAD Editorial | 24.2.2.1 [container.requirements.general] | unused allocator members | Yes | 479 | |
1415(i) | NAD Editorial | 24.2.2.1 [container.requirements.general] | Iterator stability bans the short-string optimization | Yes | ||
1035(i) | NAD | 24.2.2.1 [container.requirements.general] | <array>::swap can invalidate references, pointers, and iterators | Yes | ||
2167(i) | NAD | 24.2.2.1 [container.requirements.general] | Copy assignment requirements of Containers | Yes | ||
3431(i) | New | 24.2.2.4 [container.opt.reqmts] | <=> for containers should require three_way_comparable<T> instead of <=> | Yes | 2 | |
2200(i) | C++14 | 24.2.3 [container.requirements.dataraces] | Data race avoidance for all containers, not only for sequences | Yes | ||
1329(i) | Resolved | 24.2.3 [container.requirements.dataraces] | Data races on vector<bool> |
Yes | ||
3927(i) | Tentatively Ready | 24.2.4 [sequence.reqmts] | Unclear preconditions for operator[] for sequence containers | Yes | ||
3297(i) | New | 24.2.4 [sequence.reqmts] | Useless sequence container requirement | Yes | 3 | |
2705(i) | New | 24.2.4 [sequence.reqmts] | Questionable precondition on Sequence containers a.assign(n, t) | Yes | 3 | |
2206(i) | Open | 24.2.4 [sequence.reqmts] | Inaccuracy in initializer_list constructor requirements | Yes | 3 | |
3742(i) | WP | 24.2.4 [sequence.reqmts] | deque::prepend_range needs to permute | Yes | 2 | |
3732(i) | WP | 24.2.4 [sequence.reqmts] | prepend_range and append_range can't be amortized constant time | Yes | ||
2266(i) | C++17 | 24.2.4 [sequence.reqmts] | vector and deque have incorrect insert requirements | Yes | 2 | |
2698(i) | C++17 | 24.2.4 [sequence.reqmts] | Effect of assign() on iterators/pointers/references | Yes | 0 | |
2231(i) | C++14 | 24.2.4 [sequence.reqmts] | DR 704 removes complexity guarantee for clear() | Yes | ||
149(i) | C++11 | 24.2.4 [sequence.reqmts] | Insert should return iterator to first element inserted | Yes | ||
1037(i) | C++11 | 24.2.4 [sequence.reqmts] | Unclear status of match_results as library container | Yes | ||
1038(i) | C++11 | 24.2.4 [sequence.reqmts] | Sequence requirement table needs to reference several new containers | Yes | ||
1039(i) | C++11 | 24.2.4 [sequence.reqmts] | Sequence container back function should also support const_iterator | Yes | ||
1234(i) | C++11 | 24.2.4 [sequence.reqmts] | "Do the right thing" and NULL | Yes | ||
355(i) | CD1 | 24.2.4 [sequence.reqmts] | Operational semantics for a.back() | Yes | ||
438(i) | CD1 | 24.2.4 [sequence.reqmts] | Ambiguity in the "do the right thing" clause | Yes | ||
139(i) | TC1 | 24.2.4 [sequence.reqmts] | Optional sequence operation table description unclear | Yes | ||
151(i) | TC1 | 24.2.4 [sequence.reqmts] | Can't currently clear() empty container | Yes | ||
725(i) | NAD Editorial | 24.2.4 [sequence.reqmts] | Optional sequence container requirements column label | Yes | ||
1058(i) | NAD Editorial | 24.2.4 [sequence.reqmts] | New container issue | Yes | ||
1301(i) | NAD Editorial | 24.2.4 [sequence.reqmts] | clear() and assignment | Yes | ||
526(i) | NAD | 24.2.4 [sequence.reqmts] | Is it undefined if a function in the standard changes in parameters? | Yes | ||
1259(i) | NAD | 24.2.4 [sequence.reqmts] | Should initializer-list constructors move elements? | Yes | ||
1036(i) | NAD Concepts | 24.2.4 [sequence.reqmts] | Remove iterator specification that is redundant due to concept constraints | Yes | ||
3438(i) | New | 24.2.5.1 [container.node.overview] | §[container.node.overview] missing multiset/map cases | No | 3 | |
2743(i) | WP | 24.2.5.1 [container.node.overview] | p0083r3 node_handle private members missing "exposition only" comment | Yes | 3 | |
3227(i) | New | 24.2.7 [associative.reqmts] | Ambiguity issue for extract in ordered and unordered associative containers | Yes | 3 | |
2362(i) | New | 24.2.7 [associative.reqmts] | unique, associative emplace() should not move/copy the mapped_type constructor arguments when no insertion happens | No | 3 | |
2844(i) | Open | 24.2.7 [associative.reqmts] | Stability of a_uniq.insert(i, j) | No | 3 | |
2227(i) | Open | 24.2.7 [associative.reqmts] | Stateful comparison objects in associative containers | No | 3 | |
2215(i) | Open | 24.2.7 [associative.reqmts] | (unordered) associative container functors should be CopyConstructible | Yes | 3 | |
2436(i) | C++17 | 24.2.7 [associative.reqmts] | Comparators for associative containers should always be CopyConstructible | Yes | 2 | |
2542(i) | C++17 | 24.2.7 [associative.reqmts] | Missing const requirements for associative containers | Yes | 1 | |
2322(i) | C++14 | 24.2.7 [associative.reqmts] | Associative(initializer_list, stuff) constructors are underspecified | Yes | 0 | |
1214(i) | C++14 | 24.2.7 [associative.reqmts] | Insufficient/inconsistent key immutability requirements for associative containers | Yes | ||
2258(i) | C++14 | 24.2.7 [associative.reqmts] | a.erase(q1, q2) unable to directly return q2 | Yes | 0 | |
2299(i) | C++14 | 24.2.7 [associative.reqmts] | [CD] Effects of inaccessible key_compare::is_transparent type are not clear | Yes | 1 | |
982(i) | C++11 | 24.2.7 [associative.reqmts] | Wrong complexity for initializer_list assignment in Table 85 | Yes | ||
1040(i) | C++11 | 24.2.7 [associative.reqmts] | Clarify possible sameness of associative container's iterator and const_iterator | Yes | ||
1253(i) | C++11 | 24.2.7 [associative.reqmts] | invalidation of iterators and emplace vs. insert inconsistence in assoc. containers | Yes | ||
103(i) | CD1 | 24.2.7 [associative.reqmts] | set::iterator is required to be modifiable, but this allows modification of keys | Yes | ||
130(i) | CD1 | 24.2.7 [associative.reqmts] | Return type of container::erase(iterator) differs for associative containers | Yes | 451 | |
233(i) | CD1 | 24.2.7 [associative.reqmts] | Insertion hints in associative containers | Yes | 192, 246 | |
264(i) | CD1 | 24.2.7 [associative.reqmts] | Associative container insert(i, j) complexity requirements are not feasible. | Yes | 102 | |
316(i) | CD1 | 24.2.7 [associative.reqmts] | Vague text in Table 69 | Yes | ||
354(i) | CD1 | 24.2.7 [associative.reqmts] | Associative container lower/upper bound requirements | Yes | ||
224(i) | TC1 | 24.2.7 [associative.reqmts] | clear() complexity for associative containers refers to undefined N | Yes | ||
1041(i) | Resolved | 24.2.7 [associative.reqmts] | Add associative/unordered container functions that allow to extract elements | Yes | ||
2830(i) | Resolved | 24.2.7 [associative.reqmts] | insert_return_type is only defined for containers with unique keys | Yes | ||
2052(i) | Resolved | 24.2.7 [associative.reqmts] | Mixup between mapped_type and value_type for associative containers | Yes | 2 | |
2430(i) | NAD | 24.2.7 [associative.reqmts] | Heterogeneous container lookup should be enabled using meta-function instead of nested type | Yes | ||
2772(i) | NAD | 24.2.7 [associative.reqmts] | Inconsistency in the insert(node) interface | Yes | 2 | |
82(i) | NAD | 24.2.7 [associative.reqmts] | Missing constant for set elements | Yes | ||
192(i) | NAD | 24.2.7 [associative.reqmts] | a.insert(p,t) is inefficient and overconstrained | Yes | 233 | |
215(i) | NAD | 24.2.7 [associative.reqmts] | Can a map's key_type be const? | Yes | ||
494(i) | NAD | 24.2.7 [associative.reqmts] | Wrong runtime complexity for associative container's insert and delete | Yes | ||
763(i) | NAD | 24.2.7 [associative.reqmts] | Renaming emplace() overloads | Yes | ||
1302(i) | NAD | 24.2.7 [associative.reqmts] | different emplace semantics for sequence and associated containers | Yes | ||
102(i) | Dup | 24.2.7 [associative.reqmts] | Bug in insert range in associative containers | Yes | 264 | |
246(i) | Dup | 24.2.7 [associative.reqmts] | a.insert(p,t) is incorrectly specified | Yes | 233 | |
451(i) | Dup | 24.2.7 [associative.reqmts] | Associative erase should return an iterator | Yes | 130 | |
3691(i) | New | 24.2.7.1 [associative.reqmts.general] | Replacement of keys in associative containers | Yes | 3 | |
3577(i) | New | 24.2.7.1 [associative.reqmts.general] | Merging an (unordered) associative container with itself | No | 3 | |
3578(i) | New | 24.2.7.1 [associative.reqmts.general] | Iterator SCARYness in the context of associative container merging | No | 3 | |
1175(i) | Open | 24.2.8 [unord.req] | unordered complexity | Yes | 3 | |
2198(i) | Open | 24.2.8 [unord.req] | max_load_factor(z) makes no strong guarantees, but bans useful behavior | Yes | 3 | |
2977(i) | C++20 | 24.2.8 [unord.req] | unordered_meow::merge() has incorrect Throws: clause | Yes | 0 | |
2156(i) | C++17 | 24.2.8 [unord.req] | Unordered containers' reserve(n) reserves for n-1 elements | Yes | 3 | |
2540(i) | C++17 | 24.2.8 [unord.req] | unordered_multimap::insert hint iterator | Yes | 3 | |
2550(i) | C++17 | 24.2.8 [unord.req] | Wording of unordered container's clear() method complexity | Yes | 2 | |
2304(i) | C++14 | 24.2.8 [unord.req] | Complexity of count in unordered associative containers | Yes | 0 | |
2356(i) | C++14 | 24.2.8 [unord.req] | Stability of erasure in unordered associative containers | Yes | 2 | |
869(i) | C++11 | 24.2.8 [unord.req] | Bucket (local) iterators and iterating past end | Yes | ||
870(i) | C++11 | 24.2.8 [unord.req] | Do unordered containers not support function pointers for predicate/hasher? | Yes | ||
981(i) | C++11 | 24.2.8 [unord.req] | Unordered container requirements should add initializer_list support | Yes | ||
1189(i) | C++11 | 24.2.8 [unord.req] | Awkward interface for changing the number of buckets in an unordered associative container | Yes | ||
1197(i) | C++11 | 24.2.8 [unord.req] | Can unordered containers have bucket_count() == 0? | Yes | ||
518(i) | CD1 | 24.2.8 [unord.req] | Are insert and erase stable for unordered_multiset and unordered_multimap? | Yes | ||
2831(i) | Resolved | 24.2.8 [unord.req] | Equality can be defined when Hash function objects have different behaviour | Yes | ||
3176(i) | Resolved | 24.2.8 [unord.req] | Underspecified behavior of unordered containers when Container::key_equal differs from Pred | Yes | 2 | |
3468(i) | NAD | 24.2.8 [unord.req] | Transparent lookups in unordered containers are inconsistent | Yes | ||
1188(i) | NAD | 24.2.8 [unord.req] | Unordered containers should have a minimum load factor as well as a maximum | Yes | ||
2199(i) | NAD | 24.2.8 [unord.req] | unordered containers are required to have an initial max load factor of 1.0 | Yes | 3 | |
579(i) | NAD | 24.2.8 [unord.req] | erase(iterator) for unordered containers should not return an iterator | Yes | ||
764(i) | NAD | 24.2.8 [unord.req] | equal_range on unordered containers should return a pair of local_iterators | Yes | ||
1190(i) | NAD | 24.2.8 [unord.req] | Setting the maximum load factor should return the previous value | Yes | ||
2006(i) | NAD | 24.2.8 [unord.req] | emplace broken for associative containers | Yes | ||
3622(i) | WP | 24.2.8.1 [unord.req.general] | Misspecified transitivity of equivalence in §[unord.req.general] | Yes | 2 | |
2189(i) | Open | 24.2.8.2 [unord.req.except] | Throwing swap breaks unordered containers' state | No | 3 | |
2209(i) | C++14 | 24.3 [sequences] | assign() overspecified for sequence containers | Yes | ||
2210(i) | C++14 | 24.3 [sequences] | Missing allocator-extended constructor for allocator-aware containers | Yes | ||
679(i) | CD1 | 24.3 [sequences] | resize parameter by value | Yes | ||
1042(i) | NAD | 24.3 [sequences] | Provide ContiguousStorage concept and apply it to corresponding containers | Yes | ||
2427(i) | C++17 | 24.3.1 [sequences.general] | Container adaptors as sequence containers, redux | Yes | 0 | |
2914(i) | Resolved | 24.3.2 [array.syn] | std::array does not support class-template deduction from initializers | Yes | ||
617(i) | Open | 24.3.7 [array] | std::array is a sequence that doesn't satisfy the sequence requirements? | No | 3 | |
1306(i) | C++11 | 24.3.7 [array] | pointer and const_pointer for <array> | Yes | ||
519(i) | CD1 | 24.3.7 [array] | Data() undocumented | Yes | ||
720(i) | CD1 | 24.3.7 [array] | Omissions in constexpr usages | Yes | ||
776(i) | CD1 | 24.3.7 [array] | Undescribed assign function of std::array | Yes | ||
2443(i) | Resolved | 24.3.7 [array] | std::array member functions should be constexpr | Yes | ||
2335(i) | NAD | 24.3.7 [array] | array<array<int, 3>, 4> should be layout-compatible with int[4][3] | Yes | 3 | |
851(i) | NAD | 24.3.7 [array] | simplified array construction | Yes | ||
588(i) | NAD | 24.3.7 [array] | requirements on zero sized tr1::arrays and other details | Yes | ||
930(i) | NAD | 24.3.7 [array] | Access to std::array data as built-in array type | Yes | ||
3219(i) | New | 24.3.7.1 [array.overview] | std::array overview container requirements are incorrect | Yes | 3 | |
2823(i) | Open | 24.3.7.1 [array.overview] | std::array initialization is still not permissive enough | Yes | 3 | |
2310(i) | C++17 | 24.3.7.1 [array.overview] | Public exposition only member in std::array | Yes | 4 | |
2590(i) | C++17 | 24.3.7.1 [array.overview] | Aggregate initialization for std::array | Yes | 0 | |
2897(i) | Resolved | 24.3.7.1 [array.overview] | array::iterator and array::const_iterator should be literal types | Yes | 2 | |
3488(i) | Open | 24.3.7.4 [array.special] | Is array<const int, 0> swappable or not? | Yes | 3 | |
2157(i) | Open | 24.3.7.5 [array.zero] | How does std::array<T,0> initialization work when T is not default-constructible? | Yes | 3 | |
1417(i) | C++11 | 24.3.7.5 [array.zero] | front/back on a zero-sized array should be undefined | Yes | ||
237(i) | CD1 | 24.3.8.2 [deque.cons] | Undefined expression in complexity specification | Yes | ||
144(i) | TC1 | 24.3.8.2 [deque.cons] | Deque constructor complexity wrong | Yes | ||
1418(i) | C++11 | 24.3.8.3 [deque.capacity] | Effects of resize(size()) on a deque | Yes | ||
850(i) | CD1 | 24.3.8.3 [deque.capacity] | Should shrink_to_fit apply to std::deque? | Yes | ||
855(i) | NAD | 24.3.8.3 [deque.capacity] | capacity() and reserve() for deque? | Yes | ||
3308(i) | New | 24.3.8.4 [deque.modifiers] | vector and deque iterator erase invalidates elements even when no change occurs | Yes | 3 | |
2953(i) | C++20 | 24.3.8.4 [deque.modifiers] | LWG 2853 should apply to deque::erase too | Yes | 0 | |
2364(i) | C++17 | 24.3.8.4 [deque.modifiers] | deque and vector pop_back don't specify iterator invalidation requirements | Yes | 0 | |
2477(i) | C++17 | 24.3.8.4 [deque.modifiers] | Inconsistency of wordings in std::vector::erase() and std::deque::erase() | Yes | 0 | |
638(i) | CD1 | 24.3.8.4 [deque.modifiers] | deque end invalidation during erase | Yes | ||
878(i) | C++11 | 24.3.9 [forward.list] | forward_list preconditions | Yes | ||
1276(i) | C++11 | 24.3.9 [forward.list] | forwardlist missing allocator constructors | Yes | ||
1419(i) | NAD Editorial | 24.3.9 [forward.list] | forward_list::erase_after should return an iterator | Yes | ||
2042(i) | C++11 | 24.3.9.3 [forward.list.iter] | Comparing forward_list::before_begin() to forward_list::end() | Yes | ||
3817(i) | WP | 24.3.9.5 [forward.list.modifiers] | Missing preconditions on forward_list modifiers | Yes | ||
2585(i) | C++17 | 24.3.9.5 [forward.list.modifiers] | forward_list::resize(size_type, const value_type&) effects incorrect | Yes | 0 | |
1278(i) | C++11 | 24.3.9.5 [forward.list.modifiers] | Inconsistent return values for forward_list::insert_after | Yes | ||
1340(i) | C++11 | 24.3.9.5 [forward.list.modifiers] | Why does forward_list::resize take the object to be copied by value? | Yes | ||
897(i) | Resolved | 24.3.9.5 [forward.list.modifiers] | Forward_list issues... Part 2 | Yes | ||
3088(i) | WP | 24.3.9.6 [forward.list.ops] | forward_list::merge behavior unclear when passed *this | Yes | 3 | |
3017(i) | C++20 | 24.3.9.6 [forward.list.ops] | list splice functions should use addressof | Yes | 0 | |
2045(i) | C++14 | 24.3.9.6 [forward.list.ops] | forward_list::merge and forward_list::splice_after with unequal allocators | Yes | ||
2123(i) | C++14 | 24.3.9.6 [forward.list.ops] | merge() allocator requirements for lists versus forward lists | Yes | ||
2222(i) | C++14 | 24.3.9.6 [forward.list.ops] | Inconsistency in description of forward_list::splice_after single-element overload | Yes | ||
898(i) | C++11 | 24.3.9.6 [forward.list.ops] | Small contradiction in n2723 to forward to committee | Yes | ||
1133(i) | C++11 | 24.3.9.6 [forward.list.ops] | Does N2844 break current specification of list::splice? | Yes | ||
1310(i) | C++11 | 24.3.9.6 [forward.list.ops] | forward_list splice_after from lvalues | Yes | ||
892(i) | NAD Editorial | 24.3.9.6 [forward.list.ops] | Forward_list issues... | Yes | ||
919(i) | NAD | 24.3.9.6 [forward.list.ops] | (forward_)list specialized remove algorithms are over constrained | Yes | ||
307(i) | CD1 | 24.3.10 [list] | Lack of reference typedefs in container adaptors | Yes | ||
320(i) | CD1 | 24.3.10.2 [list.cons] | list::assign overspecified | Yes | ||
410(i) | CD1 | 24.3.10.2 [list.cons] | Missing semantics for stack and queue comparison operators | Yes | ||
1420(i) | C++11 | 24.3.10.3 [list.capacity] | Effects of resize(size()) on a list | Yes | ||
132(i) | TC1 | 24.3.10.3 [list.capacity] | list::resize description uses random access iterators | Yes | ||
2997(i) | WP | 24.3.10.5 [list.ops] | LWG 491 and the specification of {forward_,}list::unique | Yes | 3 | |
2998(i) | C++20 | 24.3.10.5 [list.ops] | Requirements on function objects passed to {forward_,}list-specific algorithms | Yes | 0 | |
3087(i) | C++20 | 24.3.10.5 [list.ops] | One final &x in §[list.ops] | Yes | 3 | |
2824(i) | C++17 | 24.3.10.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 | 24.3.10.5 [list.ops] | merge() stability for lists versus forward lists | Yes | ||
1207(i) | C++11 | 24.3.10.5 [list.ops] | Underspecified std::list operations? | Yes | ||
1215(i) | C++11 | 24.3.10.5 [list.ops] | list::merge with unequal allocators | Yes | ||
250(i) | CD1 | 24.3.10.5 [list.ops] | splicing invalidates iterators | Yes | ||
278(i) | CD1 | 24.3.10.5 [list.ops] | What does iterator validity mean? | Yes | ||
300(i) | CD1 | 24.3.10.5 [list.ops] | list::merge() specification incomplete | Yes | ||
315(i) | CD1 | 24.3.10.5 [list.ops] | Bad "range" in list::unique complexity | Yes | ||
2279(i) | NAD | 24.3.10.5 [list.ops] | Carefully state effects of list::splice function | Yes | ||
131(i) | NAD | 24.3.10.5 [list.ops] | list::splice throws nothing | Yes | ||
491(i) | NAD | 24.3.10.5 [list.ops] | std::list<>::unique incorrectly specified | Yes | ||
464(i) | CD1 | 24.3.11 [vector] | Suggestion for new member functions in standard containers | Yes | ||
469(i) | CD1 | 24.3.11 [vector] | vector<bool> ill-formed relational operators | Yes | ||
496(i) | CD1 | 24.3.11 [vector] | Illegal use of "T" in vector<bool> | Yes | ||
69(i) | TC1 | 24.3.11 [vector] | Must elements of a vector be contiguous? | Yes | ||
101(i) | NAD Editorial | 24.3.11 [vector] | No way to free storage for vector and deque | Yes | ||
757(i) | NAD Editorial | 24.3.11 [vector] | Typo in the synopsis of vector | Yes | ||
1184(i) | NAD | 24.3.11 [vector] | Feature request: dynamic bitset | Yes | ||
96(i) | NAD | 24.3.11 [vector] | Vector<bool> is not a container | Yes | ||
134(i) | TC1 | 24.3.11.2 [vector.cons] | vector constructors over specified | Yes | ||
3758(i) | New | 24.3.11.3 [vector.capacity] | Element-relocating operations of std::vector and std::deque should conditionally require Cpp17CopyInsertable in their preconditions | No | 3 | |
2158(i) | Open | 24.3.11.3 [vector.capacity] | Conditional copy/move in std::vector | Yes | 3 | |
1102(i) | Open | 24.3.11.3 [vector.capacity] | std::vector's reallocation policy still unclear | Yes | 3 | |
2160(i) | C++17 | 24.3.11.3 [vector.capacity] | Unintended destruction ordering-specification of resize | Yes | 1 | |
2223(i) | C++17 | 24.3.11.3 [vector.capacity] | shrink_to_fit effect on iterator validity | Yes | 2 | |
2323(i) | C++14 | 24.3.11.3 [vector.capacity] | vector::resize(n, t)'s specification should be simplified | Yes | 0 | |
2033(i) | C++14 | 24.3.11.3 [vector.capacity] | Preconditions of reserve, shrink_to_fit, and resize functions | Yes | ||
1525(i) | C++11 | 24.3.11.3 [vector.capacity] | Effects of resize(size()) on a vector | Yes | ||
329(i) | CD1 | 24.3.11.3 [vector.capacity] | vector capacity, reserve and reallocation | Yes | ||
341(i) | CD1 | 24.3.11.3 [vector.capacity] | Vector reallocation and swap | Yes | ||
755(i) | CD1 | 24.3.11.3 [vector.capacity] | std::vector and std:string lack explicit shrink-to-fit operations | Yes | ||
2066(i) | Resolved | 24.3.11.3 [vector.capacity] | Missing specification of vector::resize(size_type) | Yes | ||
1246(i) | NAD | 24.3.11.3 [vector.capacity] | vector::resize() missing efficiency guarantee | Yes | ||
2596(i) | C++17 | 24.3.11.4 [vector.data] | vector::data() should use addressof | Yes | 0 | |
1312(i) | C++11 | 24.3.11.4 [vector.data] | vector::data no longer returns a raw pointer | Yes | ||
2164(i) | C++20 | 24.3.11.5 [vector.modifiers] | What are the semantics of vector.emplace(vector.begin(), vector.back())? | Yes | 2 | |
3077(i) | C++20 | 24.3.11.5 [vector.modifiers] | (push|emplace)_back should invalidate the end iterator | Yes | 3 | |
2853(i) | C++17 | 24.3.11.5 [vector.modifiers] | Possible inconsistency in specification of erase in [vector.modifiers] | Yes | 0 | |
2252(i) | C++14 | 24.3.11.5 [vector.modifiers] | Strong guarantee on vector::push_back() still broken with C++11? | Yes | ||
247(i) | CD1 | 24.3.11.5 [vector.modifiers] | vector, deque::insert complexity | Yes | ||
406(i) | CD1 | 24.3.11.5 [vector.modifiers] | vector::insert(s) exception safety | Yes | ||
414(i) | CD1 | 24.3.11.5 [vector.modifiers] | Which iterators are invalidated by v.erase()? | Yes | ||
2256(i) | NAD | 24.3.11.5 [vector.modifiers] | On vector iterator invalidation | Yes | 3 | |
2449(i) | NAD | 24.3.11.5 [vector.modifiers] | vector::insert invalidates end()? | Yes | 3 | |
3638(i) | New | 24.3.12 [vector.bool] | vector<bool>::swap(reference, reference) is useless | Yes | 3 | |
1422(i) | Open | 24.3.12 [vector.bool] | vector<bool> iterators are not random access | No | 3 | |
2187(i) | C++14 | 24.3.12 [vector.bool] | vector<bool> is missing emplace and emplace_back member functions | Yes | ||
814(i) | C++11 | 24.3.12 [vector.bool] | vector<bool>::swap(reference, reference) not defined | Yes | ||
1254(i) | C++11 | 24.3.12 [vector.bool] | Misleading sentence in vector<bool>::flip | Yes | ||
1284(i) | C++11 | 24.3.12 [vector.bool] | vector<bool> initializer_list constructor missing an allocator argument | Yes | ||
751(i) | NAD | 24.3.12 [vector.bool] | change pass-by-reference members of vector<bool> to pass-by-value? | Yes | ||
3778(i) | WP | 24.3.12.1 [vector.bool.pspc] | vector<bool> missing exception specifications | Yes | ||
839(i) | Resolved | 24.4 [associative] | Maps and sets missing splice operation | Yes | ||
2012(i) | Resolved | 24.4 [associative] | Associative maps should insert pair, not tuple | Yes | ||
2161(i) | NAD | 24.4 [associative] | const equivalence of std::map | Yes | 2 | |
1111(i) | NAD Concepts | 24.4 [associative] | associative containers underconstrained | Yes | ||
2059(i) | C++17 | 24.4.4 [map] | C++0x ambiguity problem with map::erase | Yes | 3 | |
2300(i) | C++14 | 24.4.4 [map] | [CD] Redundant sections for map and multimap members should be removed | Yes | ||
1423(i) | C++11 | 24.4.4 [map] | map constructor accepting an allocator as single parameter should be explicit | Yes | ||
133(i) | TC1 | 24.4.4 [map] | map missing get_allocator() | Yes | ||
140(i) | NAD Editorial | 24.4.4 [map] | map<Key, T>::value_type does not satisfy the assignable requirement | Yes | ||
1296(i) | NAD | 24.4.4 [map] | map and multimap value_compare overspecified | Yes | ||
3531(i) | New | 24.4.4.1 [map.overview] | LWG 3025 broke previous valid code | Yes | 3 | |
3025(i) | C++20 | 24.4.4.1 [map.overview] | Map-like container deduction guides should use pair<Key, T>, not pair<const Key, T> | Yes | 2 | |
2354(i) | C++17 | 24.4.4.1 [map.overview] | Unnecessary copying when inserting into maps with braced-init syntax | Yes | 2 | |
2469(i) | C++17 | 24.4.4.3 [map.access] | Wrong specification of Requires clause of operator[] for map and unordered_map | Yes | 3 | |
2007(i) | C++11 | 24.4.4.3 [map.access] | Incorrect specification of return value for map<>::at() | Yes | ||
334(i) | CD1 | 24.4.4.3 [map.access] | map::operator[] specification forces inefficient implementation | Yes | ||
703(i) | CD1 | 24.4.4.3 [map.access] | map::at() need a complexity specification | Yes | ||
2274(i) | Resolved | 24.4.4.3 [map.access] | Does map::operator[] value-initialize or default-insert a missing element? | Yes | 3 | |
2464(i) | C++17 | 24.4.4.4 [map.modifiers] | try_emplace and insert_or_assign misspecified | Yes | 2 | |
2571(i) | C++17 | 24.4.4.4 [map.modifiers] | §[map.modifiers]/2 imposes nonsensical requirement on insert(InputIterator, InputIterator) | Yes | 0 | |
2005(i) | C++14 | 24.4.4.4 [map.modifiers] | unordered_map::insert(T&&) protection should apply to map too | Yes | ||
1424(i) | C++11 | 24.4.5 [multimap] | multimap constructor accepting an allocator as a single parameter should be explicit | Yes | ||
1091(i) | NAD | 24.4.5.3 [multimap.modifiers] | Multimap description confusing | Yes | ||
1425(i) | C++11 | 24.4.6 [set] | set constructor accepting an allocator as a single parameter should be explicit | Yes | ||
214(i) | CD1 | 24.4.6 [set] | set::find() missing const overload | Yes | 450 | |
450(i) | Dup | 24.4.6 [set] | set::find is inconsistent with associative container requirements | Yes | 214 | |
3704(i) | WP | 24.4.6.1 [set.overview] | LWG 2059 added overloads that might be ill-formed for sets | Yes | ||
2076(i) | C++17 | 24.4.6.2 [set.cons] | Bad CopyConstructible requirement in set constructors | Yes | 3 | |
1426(i) | C++11 | 24.4.7 [multiset] | multiset constructor accepting an allocator as a single parameter should be explicit | Yes | ||
2713(i) | New | 24.5 [unord] | More missing allocator-extended constructors for unordered containers | Yes | 3 | |
2230(i) | C++17 | 24.5 [unord] | "see below" for initializer-list constructors of unordered containers | Yes | 4 | |
2050(i) | C++14 | 24.5 [unord] | Unordered associative containers do not use allocator_traits to define member types | Yes | ||
676(i) | C++11 | 24.5 [unord] | Moving the unordered containers | Yes | ||
691(i) | CD1 | 24.5 [unord] | const_local_iterator cbegin, cend missing from TR1 | Yes | ||
852(i) | CD1 | 24.5 [unord] | unordered containers begin(n) mistakenly const | Yes | ||
1248(i) | Resolved | 24.5 [unord] | Equality comparison for unordered containers | Yes | ||
528(i) | NAD | 24.5 [unord] | const_iterator iterator issue when they are the same type | Yes | ||
2026(i) | NAD | 24.5 [unord] | hash should be std qualified for unordered container | Yes | ||
1427(i) | C++11 | 24.5.4 [unord.map] | unordered_map constructor accepting an allocator as a single parameter should be explicit | Yes | ||
1519(i) | C++11 | 24.5.4 [unord.map] | bucketsize() const only for unordered set | Yes | ||
761(i) | CD1 | 24.5.4.3 [unord.map.elem] | unordered_map needs an at() member function | Yes | ||
1428(i) | C++11 | 24.5.5 [unord.multimap] | unordered_multimap constructor accepting an allocator as a single parameter should be explicit | Yes | ||
1429(i) | C++11 | 24.5.6 [unord.set] | unordered_set constructor accepting an allocator as a single parameter should be explicit | Yes | ||
2982(i) | C++20 | 24.5.6.1 [unord.set.overview] | Making size_type consistent in associative container deduction guides | Yes | 2 | |
1430(i) | C++11 | 24.5.7 [unord.multiset] | unordered_multiset constructor accepting an allocator as a single parameter should be explicit | Yes | ||
2566(i) | C++17 | 24.6 [container.adaptors] | Requirements on the first template parameter of container adaptors | Yes | 0 | |
2194(i) | C++14 | 24.6 [container.adaptors] | Impossible container requirements for adaptor types | Yes | ||
1199(i) | C++11 | 24.6 [container.adaptors] | Missing extended copy constructor in container adaptors | Yes | ||
1194(i) | C++11 | 24.6 [container.adaptors] | Unintended queue constructor | Yes | ||
1198(i) | C++11 | 24.6 [container.adaptors] | Container adaptor swap: member or non-member? | Yes | ||
2915(i) | Resolved | 24.6 [container.adaptors] | The three container adapters should each have a deduction guide | Yes | ||
756(i) | Resolved | 24.6 [container.adaptors] | Container adaptors push | Yes | ||
1421(i) | Resolved | 24.6 [container.adaptors] | Accidental move-only library types due to new core language rules | Yes | 1350 | |
3781(i) | WP | 24.6.1 [container.adaptors.general] | The exposition-only alias templates cont-key-type and cont-mapped-type should be removed | Yes | ||
3774(i) | WP | 24.6.5 [flat.set.syn] | <flat_set> should include <compare> | Yes | ||
2783(i) | C++20 | 24.6.6.1 [queue.defn] | stack::emplace() and queue::emplace() should return decltype(auto) | Yes | 2 | |
3189(i) | New | 24.6.7 [priority.queue] | Missing requirement for std::priority_queue | No | 3 | |
3506(i) | WP | 24.6.7 [priority.queue] | Missing allocator-extended constructors for priority_queue | Yes | 3 | |
3522(i) | WP | 24.6.7 [priority.queue] | Missing requirement on InputIterator template parameter for priority_queue constructors | Yes | ||
3529(i) | WP | 24.6.7 [priority.queue] | priority_queue(first, last) should construct c with (first, last) |
Yes | ||
2684(i) | C++17 | 24.6.7 [priority.queue] | priority_queue lacking comparator typedef | Yes | 0 | |
2552(i) | NAD | 24.6.7 [priority.queue] | priority_queue doesn't work with move-only types | Yes | 3 | |
1196(i) | Resolved | 24.6.7.2 [priqueue.cons] | move semantics undefined for priority_queue | Yes | ||
2537(i) | C++17 | 24.6.7.3 [priqueue.cons.alloc] | Constructors for priority_queue taking allocators should call make_heap |
Yes | 0 | |
3723(i) | WP | 24.6.7.4 [priqueue.members] | priority_queue::push_range needs to append_range | Yes | 2 | |
3161(i) | Open | 24.6.8 [stack] | Container adapters mandate use of emplace_back but don't require it | Yes | 3 | |
1186(i) | NAD Concepts | 24.6.8 [stack] | Forward list could model a stack | Yes | ||
976(i) | Resolved | 24.6.8.2 [stack.defn] | Class template std::stack should be movable | Yes | ||
3884(i) | Tentatively Ready | 24.6.9 [flat.map] | flat_foo is missing allocator-extended copy/move constructors | Yes | ||
3802(i) | New | 24.6.9 [flat.map] | flat_foo allocator-extended constructors lack move semantics | No | 2 | |
3804(i) | New | 24.6.9 [flat.map] | flat_foo missing some allocator-extended deduction guides | No | 2 | |
3803(i) | WP | 24.6.9 [flat.map] | flat_foo constructors taking KeyContainer lack KeyCompare parameter | Yes | 1 | |
3816(i) | WP | 24.6.9.1 [flat.map.overview] | flat_map and flat_multimap should impose sequence container requirements | Yes | ||
3786(i) | WP | 24.6.9.2 [flat.map.defn] | Flat maps' deduction guide needs to default Allocator to be useful | Yes | 2 | |
3879(i) | WP | 24.6.11.5 [flat.set.erasure] | erase_if for flat_{,multi}set is incorrectly specified | Yes | ||
3881(i) | WP | 24.6.13 [container.adaptors.format] | Incorrect formatting of container adapters backed by std::string | Yes | ||
3903(i) | Tentatively Ready | 24.7.2.2.1 [span.overview] | span destructor is redundantly noexcept | Yes | ||
3813(i) | New | 24.7.2.2.1 [span.overview] | std::span<volatile T, E> is made ill-formed by P2278R4 when T is a normal class type | No | 2 | |
3203(i) | New | 24.7.2.2.1 [span.overview] | span element access invalidation | Yes | 2 | |
3102(i) | C++20 | 24.7.2.2.1 [span.overview] | Clarify span iterator and const_iterator behavior | Yes | 0 | |
3144(i) | C++20 | 24.7.2.2.1 [span.overview] | span does not have a const_pointer typedef | Yes | 0 | |
3369(i) | C++20 | 24.7.2.2.1 [span.overview] | span's deduction-guide for built-in arrays doesn't work | Yes | 0 | |
3100(i) | C++20 | 24.7.2.2.2 [span.cons] | Unnecessary and confusing "empty span" wording | Yes | 0 | |
3101(i) | C++20 | 24.7.2.2.2 [span.cons] | span's Container constructors need another constraint | Yes | 1 | |
3198(i) | C++20 | 24.7.2.2.2 [span.cons] | Bad constraint on std::span::span() | Yes | ||
3255(i) | C++20 | 24.7.2.2.2 [span.cons] | span's array constructor is too strict | Yes | 2 | |
3358(i) | C++20 | 24.7.2.2.2 [span.cons] | §[span.cons] is mistaken that to_address can throw | Yes | 0 | |
3103(i) | C++20 | 24.7.2.2.4 [span.sub] | Errors in taking subview of span should be ill-formed where possible | Yes | 3 | |
3320(i) | C++20 | 24.7.2.2.7 [span.iterators] | span::cbegin/cend methods produce different results than std::[ranges::]cbegin/cend | Yes | 0 | |
3876(i) | WP | 24.7.3.4 [mdspan.layout] | Default constructor of std::layout_XX::mapping misses precondition | Yes | ||
3861(i) | New | 24.7.3.4.7 [mdspan.layout.stride] | mdspan layout_stride::mapping default constructor problem | No | 1 |
(view only non-Ready open issues)
Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates |
3862(i) | WP | 25.2 [iterator.synopsis] | basic_const_iterator's common_type specialization is underconstrained | Yes | ||
3736(i) | WP | 25.2 [iterator.synopsis] | move_iterator missing disable_sized_sentinel_for specialization | Yes | ||
3765(i) | WP | 25.2 [iterator.synopsis] | const_sentinel should be constrained | Yes | ||
2061(i) | C++14 | 25.2 [iterator.synopsis] | make_move_iterator and arrays | Yes | ||
2128(i) | C++14 | 25.2 [iterator.synopsis] | Absence of global functions cbegin/cend | Yes | ||
1320(i) | NAD | 25.2 [iterator.synopsis] | Header for iter_swap | Yes | ||
1128(i) | NAD Concepts | 25.2 [iterator.synopsis] | Missing definition of iterator_traits<T*> | Yes | ||
1213(i) | Open | 25.3 [iterator.requirements] | Meaning of valid and singular iterator underspecified | No | 4 | |
2578(i) | C++17 | 25.3 [iterator.requirements] | Iterator requirements should reference iterator traits | Yes | 3 | |
1185(i) | Resolved | 25.3 [iterator.requirements] | Iterator categories and output iterators | Yes | ||
1210(i) | Resolved | 25.3 [iterator.requirements] | Iterator reachability should not require a container | Yes | ||
1212(i) | Resolved | 25.3 [iterator.requirements] | result of post-increment/decrement operator | Yes | ||
408(i) | NAD Editorial | 25.3 [iterator.requirements] | Is vector<reverse_iterator<char*> > forbidden? | Yes | ||
446(i) | NAD Editorial | 25.3 [iterator.requirements] | Iterator equality between different containers | Yes | ||
2107(i) | NAD | 25.3 [iterator.requirements] | Some iterator category should guarantee the lifetime of references | Yes | ||
3259(i) | C++20 | 25.3.1 [iterator.requirements.general] | The definition of constexpr iterators should be adjusted | Yes | 0 | |
2375(i) | Resolved | 25.3.1 [iterator.requirements.general] | Is [iterator.requirements.general]/9 too broadly applied? | Yes | 3 | |
3110(i) | Resolved | 25.3.1 [iterator.requirements.general] | Contiguous Iterators should always be Random-Access | Yes | 3 | |
3838(i) | New | 25.3.2.1 [incrementable.traits] | The last specialization of incrementable_traits is under-constrained | Yes | 3 | |
3615(i) | New | 25.3.2.1 [incrementable.traits] | The last specialization of incrementable_traits has wrong operand types | Yes | 3 | |
3541(i) | WP | 25.3.2.2 [readable.traits] | indirectly_readable_traits should be SFINAE-friendly for all types | Yes | ||
3446(i) | WP | 25.3.2.2 [readable.traits] | indirectly_readable_traits ambiguity for types with both value_type and element_type | Yes | 2 | |
3287(i) | New | 25.3.2.3 [iterator.traits] | Exposition-only cpp17-input-iterator concept is needlessly complex | Yes | 3 | |
3798(i) | WP | 25.3.2.3 [iterator.traits] | Rvalue reference and iterator_category | Yes | ||
3420(i) | WP | 25.3.2.3 [iterator.traits] | cpp17-iterator should check that the type looks like an iterator first | Yes | 0 | |
2952(i) | C++20 | 25.3.2.3 [iterator.traits] | iterator_traits should work for pointers to cv T | Yes | 0 | |
445(i) | CD1 | 25.3.2.3 [iterator.traits] | iterator_traits::reference unspecified for some iterator categories | Yes | ||
3283(i) | Resolved | 25.3.2.3 [iterator.traits] | Types satisfying input_iterator but not equality_comparable look like C++17 output iterators | Yes | 2 | |
3289(i) | Resolved | 25.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 | 25.3.2.3 [iterator.traits] | iterator_traits should SFINAE for void* and function pointers | Yes | 3 | |
1127(i) | NAD Concepts | 25.3.2.3 [iterator.traits] | rvalue references and iterator traits | Yes | ||
3247(i) | C++20 | 25.3.3.1 [iterator.cust.move] | ranges::iter_move should perform ADL-only lookup of iter_move | Yes | 2 | |
3299(i) | C++20 | 25.3.3.1 [iterator.cust.move] | Pointers don't need customized iterator behavior | Yes | 0 | |
765(i) | C++11 | 25.3.4 [iterator.concepts] | More on iterator validity | Yes | ||
198(i) | CD1 | 25.3.4 [iterator.concepts] | Validity of pointers and references unspecified after iterator destruction | Yes | ||
346(i) | CD1 | 25.3.4 [iterator.concepts] | Some iterator member functions should be const | Yes | ||
407(i) | CD1 | 25.3.4 [iterator.concepts] | Can singular iterators be destroyed? | Yes | ||
208(i) | TC1 | 25.3.4 [iterator.concepts] | Unnecessary restriction on past-the-end iterators | Yes | ||
304(i) | NAD | 25.3.4 [iterator.concepts] | Must *a return an lvalue when a is an input iterator? | Yes | ||
3279(i) | Resolved | 25.3.4.2 [iterator.concept.readable] | shared_ptr<int>& does not not satisfy readable | Yes | 1 | |
3890(i) | New | 25.3.4.4 [iterator.concept.winc] | ABI issue for integer-class types | Yes | 3 | |
3467(i) | WP | 25.3.4.4 [iterator.concept.winc] | bool can't be an integer-like type | Yes | 0 | |
3367(i) | C++20 | 25.3.4.4 [iterator.concept.winc] | Integer-class conversions should not throw | Yes | 0 | |
3366(i) | Resolved | 25.3.4.4 [iterator.concept.winc] | Narrowing conversions between integer and integer-class types | Yes | 3 | |
3376(i) | Resolved | 25.3.4.4 [iterator.concept.winc] | "integer-like class type" is too restrictive | Yes | 3 | |
3575(i) | Resolved | 25.3.4.4 [iterator.concept.winc] | <=> for integer-class types isn't consistently specified | Yes | 3 | |
3183(i) | C++20 | 25.3.4.8 [iterator.concept.sizedsentinel] | Normative permission to specialize Ranges variable templates | Yes | 0 | |
3716(i) | New | 25.3.4.11 [iterator.concept.forward] | §[iterator.concept.forward][forward.iterators] Two different definitions of multi-pass guarantee | No | 3 | |
3277(i) | C++20 | 25.3.4.13 [iterator.concept.random.access] | Pre-increment on prvalues is not a requirement of weakly_incrementable | Yes | 0 | |
3284(i) | C++20 | 25.3.4.13 [iterator.concept.random.access] | random_access_iterator semantic constraints accidentally promote difference type using unary negate | Yes | 0 | |
3607(i) | WP | 25.3.4.14 [iterator.concept.contiguous] | contiguous_iterator should not be allowed to have custom iter_move and iter_swap behavior | Yes | ||
2437(i) | C++17 | 25.3.5.2 [iterator.iterators] | iterator_traits<OutIt>::reference can and can't be void | Yes | 3 | |
1009(i) | NAD | 25.3.5.2 [iterator.iterators] | InputIterator post-increment dangerous | Yes | ||
2962(i) | Open | 25.3.5.3 [input.iterators] | Iterators of Containers of move-only types do not model InputIterator | Yes | 2 | |
484(i) | Open | 25.3.5.3 [input.iterators] | Convertible to T | No | 2 | |
98(i) | CD1 | 25.3.5.3 [input.iterators] | Input iterator requirements are badly written | Yes | ||
558(i) | NAD Editorial | 25.3.5.3 [input.iterators] | lib.input.iterators Defect | Yes | ||
392(i) | NAD | 25.3.5.3 [input.iterators] | 'equivalence' for input iterators | Yes | ||
493(i) | NAD | 25.3.5.3 [input.iterators] | Undefined Expression in Input Iterator Note Title | Yes | ||
2035(i) | Open | 25.3.5.4 [output.iterators] | Output iterator requirements are broken | Yes | 3 | |
2038(i) | Open | 25.3.5.4 [output.iterators] | Missing definition for incrementable iterator | No | 3 | |
324(i) | CD1 | 25.3.5.4 [output.iterators] | Do output iterators have value types? | Yes | ||
485(i) | Resolved | 25.3.5.4 [output.iterators] | output iterator insufficiently constrained | Yes | ||
200(i) | CD1 | 25.3.5.5 [forward.iterators] | Forward iterator requirements don't allow constant iterators | Yes | ||
478(i) | CD1 | 25.3.5.5 [forward.iterators] | Should forward iterator requirements table have a line for r->m? | Yes | 477 | |
1311(i) | Resolved | 25.3.5.5 [forward.iterators] | multi-pass property of Forward Iterator underspecified | Yes | ||
476(i) | NAD | 25.3.5.5 [forward.iterators] | Forward Iterator implied mutability | Yes | ||
477(i) | Dup | 25.3.5.5 [forward.iterators] | Operator-> for const forward iterators | Yes | 478 | |
1084(i) | NAD Concepts | 25.3.5.5 [forward.iterators] | Concept ForwardIterator should provide default implementation for post-increment | Yes | ||
383(i) | CD1 | 25.3.5.6 [bidirectional.iterators] | Bidirectional iterator assertion typo | Yes | ||
299(i) | NAD Editorial | 25.3.5.6 [bidirectional.iterators] | Incorrect return types for iterator dereference | Yes | ||
1085(i) | NAD Concepts | 25.3.5.6 [bidirectional.iterators] | BidirectionalIterator concept should provide default implementation for post-decrement | Yes | ||
3236(i) | WP | 25.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 | 25.3.5.7 [random.access.iterators] | Iterator operator-= has gratuitous undefined behaviour | Yes | 2 | |
1079(i) | C++11 | 25.3.5.7 [random.access.iterators] | UK-265: RandomAccessIterator 's operator- has nonsensical effects clause |
Yes | ||
448(i) | CD1 | 25.3.5.7 [random.access.iterators] | Random Access Iterators over abstract classes | Yes | ||
458(i) | NAD | 25.3.5.7 [random.access.iterators] | 24.1.5 contains unintended limitation for operator- | Yes | ||
1010(i) | NAD Concepts | 25.3.5.7 [random.access.iterators] | operator-= should use default in concept | Yes | ||
3859(i) | Resolved | 25.3.6.4 [projected] | std::projected cannot handle proxy iterator | Yes | 3 | |
3197(i) | New | 25.4.3 [iterator.operations] | std::prev should not require BidirectionalIterator | Yes | 3 | |
3439(i) | New | 25.4.3 [iterator.operations] | "Distance" template parameter is underspecified | No | 3 | |
3344(i) | New | 25.4.3 [iterator.operations] | advance(i, most-negative) and prev(i, most-negative) | Yes | 3 | |
2931(i) | Open | 25.4.3 [iterator.operations] | Missed optimization opportunity with single-argument std::next | No | 3 | |
2353(i) | C++17 | 25.4.3 [iterator.operations] | std::next is over-constrained | Yes | 4 | |
1011(i) | C++11 | 25.4.3 [iterator.operations] | next/prev wrong iterator type | Yes | ||
940(i) | Resolved | 25.4.3 [iterator.operations] | std::distance | Yes | ||
204(i) | NAD | 25.4.3 [iterator.operations] | distance(first, last) when "last" is before "first" | Yes | ||
3306(i) | WP | 25.4.4.2 [range.iter.op.advance] | ranges::advance violates its preconditions | Yes | 2 | |
3453(i) | WP | 25.4.4.2 [range.iter.op.advance] | Generic code cannot call ranges::advance(i, s) | Yes | 2 | |
3664(i) | WP | 25.4.4.3 [range.iter.op.distance] | LWG 3392 broke std::ranges::distance(a, a+3) | Yes | 2 | |
3392(i) | WP | 25.4.4.3 [range.iter.op.distance] | ranges::distance() cannot be used on a move-only iterator with a sized sentinel | Yes | 3 | |
2858(i) | New | 25.5.1 [reverse.iterators] | LWG 2472: actually an incompatibility with C++03 | Yes | 4 | |
2285(i) | C++14 | 25.5.1 [reverse.iterators] | make_reverse_iterator | Yes | ||
280(i) | CD1 | 25.5.1 [reverse.iterators] | Comparison of reverse_iterator to const reverse_iterator | Yes | ||
2208(i) | Resolved | 25.5.1 [reverse.iterators] | std::reverse_iterator should be a literal type | Yes | 3 | |
3623(i) | New | 25.5.1.1 [reverse.iterators.general] | Uses of std::reverse_iterator with containers should not require manually including <iterator> | Yes | 3 | |
2595(i) | New | 25.5.1.2 [reverse.iterator] | reverse_iterator::operator[]'s return type revisited | Yes | 3 | |
2360(i) | C++14 | 25.5.1.2 [reverse.iterator] | reverse_iterator::operator*() is unimplementable | Yes | 1 | |
235(i) | CD1 | 25.5.1.2 [reverse.iterator] | No specification of default ctor for reverse_iterator | Yes | ||
3602(i) | New | 25.5.1.4 [reverse.iter.cons] | reverse_iterator's converting assignment is overconstrained | Yes | 3 | |
1012(i) | C++11 | 25.5.1.4 [reverse.iter.cons] | reverse_iterator default ctor should value initialize | Yes | ||
3725(i) | New | 25.5.1.6 [reverse.iter.elem] | reverse_iterator::operator-> should not use prev for non-pointer iterators | Yes | 3 | |
2188(i) | C++14 | 25.5.1.6 [reverse.iter.elem] | Reverse iterator does not fully support targets that overload operator& | Yes | 1 | |
386(i) | CD1 | 25.5.1.6 [reverse.iter.elem] | Reverse iterator's operator[] has impossible return type | Yes | ||
1052(i) | Resolved | 25.5.1.6 [reverse.iter.elem] | reverse_iterator::operator-> should also support smart pointers | Yes | 2775 | |
3726(i) | NAD | 25.5.1.6 [reverse.iter.elem] | reverse_iterator::operator-> is underconstrained for non-pointer iterators | Yes | ||
3727(i) | NAD | 25.5.1.6 [reverse.iter.elem] | reverse_iterator/common_iterator's operator-> should not require the underlying iterator's operator-> to be a const member function | Yes | ||
1051(i) | NAD | 25.5.1.6 [reverse.iter.elem] | Specify subscript operation return types of reverse_iterator and move_iterator | Yes | ||
2204(i) | NAD | 25.5.1.6 [reverse.iter.elem] | reverse_iterator should not require a second copy of the base iterator | Yes | ||
2347(i) | NAD | 25.5.1.6 [reverse.iter.elem] | reverse_iterator::operator[] calls const version of current[] | Yes | 2 | |
2775(i) | Dup | 25.5.1.6 [reverse.iter.elem] | reverse_iterator is does not compile for fancy pointers | Yes | 1052 | |
99(i) | NAD | 25.5.1.8 [reverse.iter.cmp] | Reverse_iterator comparisons completely wrong | Yes | ||
685(i) | CD1 | 25.5.1.9 [reverse.iter.nonmember] | reverse_iterator/move_iterator difference has invalid signatures | Yes | ||
2916(i) | NAD | 25.5.2 [insert.iterators] | Insert iterators should each have an instantiation guide to initialize from a container | Yes | ||
100(i) | NAD | 25.5.2 [insert.iterators] | Insert iterators/ostream_iterators overconstrained | Yes | ||
977(i) | NAD | 25.5.2 [insert.iterators] | insert iterators inefficient for expensive to move types | Yes | ||
1062(i) | NAD | 25.5.2 [insert.iterators] | Missing insert_iterator for stacks/queues | Yes | ||
3415(i) | NAD | 25.5.2.2 [back.insert.iterator] | back_insert_iterator fails when a container is also its value type | Yes | ||
903(i) | NAD | 25.5.2.2 [back.insert.iterator] | back_insert_iterator issue | Yes | ||
2324(i) | C++14 | 25.5.2.2.1 [back.insert.iter.ops] | Insert iterator constructors should use addressof() | Yes | 0 | |
1334(i) | C++11 | 25.5.2.2.1 [back.insert.iter.ops] | Insert iterators are broken for some proxy containers compared to C++03 | Yes | ||
901(i) | NAD | 25.5.2.4 [insert.iterator] | insert iterators can move from lvalues | Yes | ||
561(i) | CD1 | 25.5.2.4.2 [inserter] | inserter overly generic | Yes | ||
3769(i) | WP | 25.5.3 [const.iterators] | basic_const_iterator::operator== causes infinite constraint recursion | Yes | 1 | |
3853(i) | WP | 25.5.3 [const.iterators] | basic_const_iterator<volatile int*>::operator-> is ill-formed | Yes | ||
3872(i) | WP | 25.5.3 [const.iterators] | basic_const_iterator should have custom iter_move | Yes | 3 | |
3863(i) | New | 25.5.3.2 [const.iterators.alias] | Is input_iterator guaranteed to have iter_const_reference_t? | No | 2 | |
3858(i) | NAD | 25.5.3.4 [const.iterators.types] | basic_const_iterator is too strict to provide iterator_category | Yes | ||
3593(i) | WP | 25.5.4 [move.iterators] | Several iterators' base() const & and lazy_split_view::outer-iterator::value_type::end() missing noexcept | Yes | ||
3391(i) | WP | 25.5.4 [move.iterators] | Problems with counted_iterator/move_iterator::base() const & | Yes | 2 | |
2106(i) | C++17 | 25.5.4 [move.iterators] | move_iterator wrapping iterators returning prvalues | Yes | 3 | |
979(i) | NAD Editorial | 25.5.4 [move.iterators] | Bad example | Yes | ||
680(i) | CD1 | 25.5.4.2 [move.iterator] | move_iterator operator-> return | Yes | ||
1211(i) | Resolved | 25.5.4.2 [move.iterator] | Move iterators should be restricted as input iterators | Yes | ||
3265(i) | WP | 25.5.4.4 [move.iter.cons] | move_iterator's conversions are more broken after P1207 | Yes | 2 | |
3435(i) | WP | 25.5.4.4 [move.iter.cons] | three_way_comparable_with<reverse_iterator<int*>, reverse_iterator<const int*>> | Yes | 2 | |
872(i) | C++11 | 25.5.4.6 [move.iter.elem] | move_iterator::operator[] has wrong return type | Yes | ||
3293(i) | WP | 25.5.4.9 [move.iter.nonmember] | move_iterator operator+() has incorrect constraints | Yes | 3 | |
3390(i) | C++20 | 25.5.4.9 [move.iter.nonmember] | make_move_iterator() cannot be used to construct a move_iterator for a move-only iterator | Yes | 0 | |
3749(i) | New | 25.5.5 [iterators.common] | common_iterator should handle integer-class difference types | Yes | 2 | |
3783(i) | New | 25.5.5.1 [common.iterator] | views::common may not be a range adaptor object | Yes | 3 | |
3574(i) | WP | 25.5.5.1 [common.iterator] | common_iterator should be completely constexpr-able | Yes | 3 | |
3385(i) | C++20 | 25.5.5.1 [common.iterator] | common_iterator is not sufficiently constrained for non-copyable iterators | Yes | 0 | |
3660(i) | WP | 25.5.5.2 [common.iter.types] | iterator_traits<common_iterator>::pointer should conform to §[iterator.traits] | Yes | ||
3672(i) | WP | 25.5.5.4 [common.iter.access] | common_iterator::operator->() should return by value | Yes | ||
3595(i) | WP | 25.5.5.4 [common.iter.access] | Exposition-only classes proxy and postfix-proxy for common_iterator should be fully constexpr | Yes | ||
3601(i) | WP | 25.5.5.5 [common.iter.nav] | common_iterator's postfix-proxy needs indirectly_readable | Yes | ||
3546(i) | WP | 25.5.5.5 [common.iter.nav] | common_iterator's postfix-proxy is not quite right | Yes | ||
3748(i) | New | 25.5.5.6 [common.iter.cmp] | common_iterator and counted_iterator' operator- are missing cast to return type | Yes | 3 | |
3472(i) | WP | 25.5.7 [iterators.counted] | counted_iterator is missing preconditions | Yes | ||
3543(i) | WP | 25.5.7.1 [counted.iterator] | Definition of when counted_iterators refer to the same sequence isn't quite right | Yes | ||
3408(i) | Resolved | 25.5.7.1 [counted.iterator] | LWG 3291 reveals deficiencies in counted_iterator | Yes | 2 | |
3389(i) | C++20 | 25.5.7.2 [counted.iter.const] | A move-only iterator still does not have a counted_iterator | Yes | 0 | |
3643(i) | WP | 25.5.7.5 [counted.iter.nav] | Missing constexpr in std::counted_iterator | Yes | ||
2576(i) | C++17 | 25.6 [stream.iterators] | istream_iterator and ostream_iterator should use std::addressof | Yes | 0 | |
1086(i) | NAD Concepts | 25.6 [stream.iterators] | Stream iterators need to be concept-constrained templates | Yes | ||
788(i) | C++11 | 25.6.2 [istream.iterator] | Ambiguity in [istream.iterator] | Yes | ||
838(i) | C++11 | 25.6.2 [istream.iterator] | Can an end-of-stream iterator become a non-end-of-stream one? | Yes | ||
245(i) | NAD | 25.6.2 [istream.iterator] | Which operations on istream_iterator trigger input operations? | Yes | ||
3600(i) | WP | 25.6.2.2 [istream.iterator.cons] | Making istream_iterator copy constructor trivial is an ABI break | Yes | 3 | |
2793(i) | C++17 | 25.6.2.2 [istream.iterator.cons] | Awkward conflation of trivial special members of istream_iterator | Yes | ||
2878(i) | C++17 | 25.6.2.2 [istream.iterator.cons] | Missing DefaultConstructible requirement for istream_iterator default constructor | Yes | ||
2804(i) | C++17 | 25.6.2.2 [istream.iterator.cons] | Unconditional constexpr default constructor for istream_iterator | Yes | 0 | |
1280(i) | C++11 | 25.6.2.2 [istream.iterator.cons] | Initialization of stream iterators | Yes | ||
1129(i) | Resolved | 25.6.2.2 [istream.iterator.cons] | istream(buf)_iterator should support literal sentinel value | Yes | ||
260(i) | CD1 | 25.6.2.3 [istream.iterator.ops] | Inconsistent return type of istream_iterator::operator++(int) | Yes | ||
261(i) | CD1 | 25.6.2.3 [istream.iterator.ops] | Missing description of istream_iterator::operator!= | Yes | ||
349(i) | CD1 | 25.6.3 [ostream.iterator] | Minor typographical error in ostream_iterator | Yes | ||
1125(i) | NAD | 25.6.3.3 [ostream.iterator.ops] | ostream_iterator does not work with movable types | Yes | ||
2366(i) | New | 25.6.4 [istreambuf.iterator] | istreambuf_iterator end-of-stream equality | Yes | 3 | |
3107(i) | New | 25.6.4 [istreambuf.iterator] | istreambuf_iterator has public exposition-only member | Yes | 4 | |
3188(i) | New | 25.6.4 [istreambuf.iterator] | istreambuf_iterator::pointer should not be unspecified | Yes | 3 | |
2790(i) | C++17 | 25.6.4 [istreambuf.iterator] | Missing specification of istreambuf_iterator::operator-> | Yes | 3 | |
659(i) | C++11 | 25.6.4 [istreambuf.iterator] | istreambuf_iterator should have an operator->() | Yes | ||
110(i) | TC1 | 25.6.4 [istreambuf.iterator] | istreambuf_iterator::equal not const | Yes | ||
3108(i) | New | 25.6.4.2 [istreambuf.iterator.proxy] | istreambuf_iterator::proxy::operator* should be const | Yes | 3 | |
2544(i) | C++17 | 25.6.4.3 [istreambuf.iterator.cons] | istreambuf_iterator(basic_streambuf<charT, traits>* s) effects unclear when s is 0 | Yes | 3 | |
1126(i) | C++11 | 25.6.4.4 [istreambuf.iterator.ops] | istreambuff_iterator::equal needs a const & parameter | Yes | ||
39(i) | TC1 | 25.6.4.4 [istreambuf.iterator.ops] | istreambuf_iterator<>::operator++(int) definition garbled | Yes | ||
111(i) | NAD | 25.6.4.4 [istreambuf.iterator.ops] | istreambuf_iterator::equal overspecified, inefficient | Yes | ||
112(i) | TC1 | 25.6.5.2 [ostreambuf.iter.cons] | Minor typo in ostreambuf_iterator constructor | Yes | ||
2457(i) | Tentatively NAD | 25.7 [iterator.range] | std::begin() and std::end() do not support multi-dimensional arrays correctly | No | 3 | |
3537(i) | New | 25.7 [iterator.range] | §[iterator.range] Missing noexcept for std::rbegin/rend for arrays and initializer_list | No | 3 | |
3009(i) | C++20 | 25.7 [iterator.range] | Including <string_view> doesn't provide std::size/empty/data | Yes | 0 | |
3208(i) | C++20 | 25.7 [iterator.range] | Boolean's expression requirements are ordered inconsistently | Yes | 0 | |
3300(i) | C++20 | 25.7 [iterator.range] | Non-array ssize overload is underconstrained | Yes | 3 | |
2812(i) | C++17 | 25.7 [iterator.range] | Range access is available with <string_view> | Yes | 0 | |
2280(i) | C++14 | 25.7 [iterator.range] | begin/end for arrays should be constexpr and noexcept | Yes | ||
3207(i) | NAD | 25.7 [iterator.range] | N in ssize(const T (&)[N]) should be size_t | Yes |
(view only non-Ready open issues)
Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates |
3914(i) | Tentatively Ready | 26.2 [ranges.syn] | Inconsistent template-head of ranges::enumerate_view | Yes | ||
3729(i) | New | 26.2 [ranges.syn] | std::tuple_element_t<std::ranges::subrange<I, S, K>> should remove top-level cv-qualifiers | Yes | 4 | |
3913(i) | SG9 | 26.2 [ranges.syn] | ranges::const_iterator_t<range R> fails to accept arrays of unknown bound |
Yes | 3 | |
3860(i) | WP | 26.2 [ranges.syn] | range_common_reference_t is missing | Yes | ||
3770(i) | WP | 26.2 [ranges.syn] | const_sentinel_t is missing | Yes | 3 | |
3302(i) | C++20 | 26.2 [ranges.syn] | Range adaptor objects keys and values are unspecified | Yes | 1 | |
3335(i) | C++20 | 26.2 [ranges.syn] | Resolve C++20 NB comments US 273 and GB 274 | Yes | 1 | |
3351(i) | C++20 | 26.2 [ranges.syn] | ranges::enable_safe_range should not be constrained | Yes | 0 | |
3379(i) | C++20 | 26.2 [ranges.syn] | "safe" in several library names is misleading | Yes | 1 | |
3398(i) | C++20 | 26.2 [ranges.syn] | tuple_element_t is also wrong for const subrange | Yes | 0 | |
3768(i) | NAD | 26.2 [ranges.syn] | possibly-const-range is overconstrained | Yes | ||
3258(i) | Resolved | 26.3.2 [range.access.begin] | Range access and initializer_list | Yes | 3 | |
3333(i) | NAD | 26.3.4 [range.access.cbegin] | ranges::cbegin/ranges::cend, (and maybe ranges::crbegin/ranges::crend) are under-specified to allow rvalue-arrays | Yes | ||
3368(i) | Resolved | 26.3.10 [range.prim.size] | Exactly when does size return end - begin? | Yes | 0 | |
3403(i) | WP | 26.3.11 [range.prim.ssize] | Domain of ranges::ssize(E) doesn't match ranges::size(E) | Yes | 2 | |
3915(i) | Tentatively Ready | 26.4.2 [range.range] | Redundant paragraph about expression variations | Yes | ||
3361(i) | WP | 26.4.2 [range.range] | safe_range<SomeRange&> case | Yes | 3 | |
3559(i) | WP | 26.4.3 [range.sized] | Semantic requirements of sized_range is circular | Yes | ||
3264(i) | C++20 | 26.4.3 [range.sized] | sized_range and ranges::size redundantly use disable_sized_range | Yes | 1 | |
3326(i) | C++20 | 26.4.4 [range.view] | enable_view has false positives | Yes | 0 | |
3452(i) | Resolved | 26.4.4 [range.view] | Are views really supposed to have strict 𝒪(1) destruction? | Yes | 2 | |
3896(i) | New | 26.4.5 [range.refinements] | The definition of viewable_range is not quite right | Yes | 4 | |
3481(i) | WP | 26.4.5 [range.refinements] | viewable_range mishandles lvalue move-only views | Yes | 2 | |
3375(i) | C++20 | 26.4.5 [range.refinements] | decay in viewable_range should be remove_cvref | Yes | 0 | |
3381(i) | C++20 | 26.4.5 [range.refinements] | begin and data must agree for contiguous_range | Yes | 0 | |
3549(i) | WP | 26.5.3 [view.interface] | view_interface is overspecified to derive from view_base | Yes | 2 | |
3646(i) | WP | 26.5.3.1 [view.interface.general] | std::ranges::view_interface::size returns a signed type | Yes | 3 | |
3766(i) | WP | 26.5.3.1 [view.interface.general] | view_interface::cbegin is underconstrained | Yes | 2 | |
3715(i) | WP | 26.5.3.1 [view.interface.general] | view_interface::empty is overconstrained | Yes | ||
3470(i) | WP | 26.5.4 [range.subrange] | convertible-to-non-slicing seems to reject valid case | Yes | 3 | |
3589(i) | WP | 26.5.4 [range.subrange] | The const lvalue reference overload of get for subrange does not constrain I to be copyable when N == 0 | Yes | 3 | |
3404(i) | WP | 26.5.4 [range.subrange] | Finish removing subrange's conversions from pair-like | Yes | 0 | |
3281(i) | C++20 | 26.5.4 [range.subrange] | Conversion from pair-like types to subrange is a silent semantic promotion | Yes | 1 | |
3282(i) | C++20 | 26.5.4 [range.subrange] | subrange converting constructor should disallow derived to base conversions | Yes | 1 | |
3179(i) | C++20 | 26.5.4.2 [range.subrange.ctor] | subrange should always model Range | Yes | 0 | |
3433(i) | WP | 26.5.4.3 [range.subrange.access] | subrange::advance(n) has UB when n < 0 | Yes | 2 | |
3551(i) | WP | 26.5.5 [range.dangling] | borrowed_{iterator,subrange}_t are overspecified | Yes | ||
3845(i) | New | 26.5.7.2 [range.utility.conv.to] | ranges::to's from_range_t tag branch has the wrong constraint | Yes | 4 | |
3722(i) | New | 26.5.7.2 [range.utility.conv.to] | ranges::to reserves the wrong size | Yes | 4 | |
3733(i) | WP | 26.5.7.2 [range.utility.conv.to] | ranges::to misuses cpp17-input-iterator | Yes | 2 | |
3847(i) | WP | 26.5.7.2 [range.utility.conv.to] | ranges::to can still return views | Yes | 2 | |
3743(i) | WP | 26.5.7.2 [range.utility.conv.to] | ranges::to's reserve may be ill-formed | Yes | ||
3785(i) | WP | 26.5.7.2 [range.utility.conv.to] | ranges::to is over-constrained on the destination type being a range | Yes | ||
3787(i) | Resolved | 26.5.7.2 [range.utility.conv.to] | ranges::to's template parameter C should not be a reference type | Yes | 3 | |
3907(i) | New | 26.6 [range.factories] | Can iterator types of range adaptors and range factories be SCARY? | No | 3 | |
3428(i) | WP | 26.6.3.2 [range.single.view] | single_view's in place constructor should be explicit | Yes | 0 | |
3614(i) | New | 26.6.4.2 [range.iota.view] | iota_view::size and the most negative signed integer values | Yes | 3 | |
3597(i) | WP | 26.6.4.2 [range.iota.view] | Unsigned integer types don't model advanceable | Yes | 3 | |
3610(i) | WP | 26.6.4.2 [range.iota.view] | iota_view::size sometimes rejects integer-class types | Yes | ||
3523(i) | WP | 26.6.4.2 [range.iota.view] | iota_view::sentinel is not always iota_view's sentinel | Yes | ||
3292(i) | C++20 | 26.6.4.2 [range.iota.view] | iota_view is under-constrained | Yes | ||
3846(i) | New | 26.6.4.3 [range.iota.iterator] | iota_view::iterator::operator- is overconstrained | Yes | 3 | |
3670(i) | WP | 26.6.4.3 [range.iota.iterator] | Cpp17InputIterators don't have integer-class difference types | Yes | ||
3580(i) | WP | 26.6.4.3 [range.iota.iterator] | iota_view's iterator's binary operator+ should be improved | Yes | ||
3291(i) | C++20 | 26.6.4.3 [range.iota.iterator] | iota_view::iterator has the wrong iterator_category | Yes | 0 | |
3388(i) | C++20 | 26.6.4.3 [range.iota.iterator] | view iterator types have ill-formed <=> operators | Yes | 0 | |
3609(i) | New | 26.6.4.4 [range.iota.sentinel] | std::ranges::iota_view<int, long> has non-subtractable iterator and sentinel types | Yes | 3 | |
3875(i) | WP | 26.6.5 [range.repeat] | std::ranges::repeat_view<T, IntegerClass>::iterator may be ill-formed | Yes | ||
3772(i) | WP | 26.6.5.2 [range.repeat.view] | repeat_view's piecewise constructor is missing Postconditions | Yes | 2 | |
3796(i) | WP | 26.6.5.2 [range.repeat.view] | movable-box as member should use default-initialization instead of copy-initialization | Yes | ||
3763(i) | New | 26.6.5.3 [range.repeat.iterator] | Should range adaptor iterators only provide iterator_category when its difference_type is not an integer-class type? | Yes | 3 | |
3679(i) | LEWG | 26.6.6 [range.istream] | Is <ranges> sufficient for istream_view? | No | 3 | |
3568(i) | WP | 26.6.6.2 [range.istream.view] | basic_istream_view needs to initialize value_ | Yes | ||
3489(i) | New | 26.6.6.3 [range.istream.iterator] | Improve istream_view wording | Yes | 3 | |
3397(i) | C++20 | 26.6.6.3 [range.istream.iterator] | ranges::basic_istream_view::iterator should not provide iterator_category | Yes | 1 | |
3394(i) | NAD | 26.6.6.3 [range.istream.iterator] | ranges::basic_istream_view::iterator has an empty iterator_traits | Yes | 2 | |
3524(i) | Resolved | 26.7 [range.adaptors] | Unimplementable narrowing and evaluation order requirements for range adaptors | Yes | 3 | |
3509(i) | Resolved | 26.7.2 [range.adaptor.object] | Range adaptor objects are underspecified | Yes | 2 | |
3477(i) | WP | 26.7.3 [range.move.wrap] | Simplify constraints for semiregular-box | Yes | 0 | |
3572(i) | WP | 26.7.3 [range.move.wrap] | copyable-box should be fully constexpr | Yes | ||
3479(i) | Resolved | 26.7.3 [range.move.wrap] | semiregular-box mishandles self-assignment | Yes | 3 | |
3173(i) | C++20 | 26.7.6.2 [range.ref.view] | Enable CTAD for ref-view | Yes | 0 | |
3829(i) | New | 26.7.7.2 [range.as.rvalue.view] | as_rvalue_view::end should improve non-common case | Yes | 3 | |
3280(i) | C++20 | 26.7.8.2 [range.filter.view] | View converting constructors can cause constraint recursion and are unneeded | Yes | 1 | |
3533(i) | WP | 26.7.8.3 [range.filter.iterator] | Make base() const & consistent across iterator wrappers that supports input_iterators | Yes | ||
3325(i) | C++20 | 26.7.9.2 [range.transform.view] | Constrain return type of transformation function for transform_view | Yes | 0 | |
3564(i) | WP | 26.7.9.3 [range.transform.iterator] | transform_view::iterator<true>::value_type and iterator_category should use const F& | Yes | 2 | |
3618(i) | WP | 26.7.9.3 [range.transform.iterator] | Unnecessary iter_move for transform_view::iterator | Yes | ||
3520(i) | WP | 26.7.9.3 [range.transform.iterator] | iter_move and iter_swap are inconsistent for transform_view::iterator | Yes | 2 | |
3555(i) | WP | 26.7.9.3 [range.transform.iterator] | {transform,elements}_view::iterator::iterator_concept should consider const-qualification of the underlying range | Yes | ||
3483(i) | WP | 26.7.9.3 [range.transform.iterator] | transform_view::iterator's difference is overconstrained | Yes | 0 | |
3301(i) | C++20 | 26.7.9.3 [range.transform.iterator] | transform_view::iterator has incorrect iterator_category | Yes | 1 | |
3448(i) | WP | 26.7.9.4 [range.transform.sentinel] | transform_view's sentinel<false> not comparable with iterator<true> | Yes | 1 | |
3384(i) | C++20 | 26.7.9.4 [range.transform.sentinel] | transform_view::sentinel has an incorrect operator- | Yes | 0 | |
3407(i) | WP | 26.7.10.1 [range.take.overview] | Some problems with the wording changes of P1739R4 | Yes | 2 | |
3738(i) | WP | 26.7.10.2 [range.take.view] | Missing preconditions for take_view constructor | Yes | ||
3447(i) | WP | 26.7.10.2 [range.take.view] | Deduction guides for take_view and drop_view have different constraints | Yes | 0 | |
3286(i) | C++20 | 26.7.10.2 [range.take.view] | ranges::size is not required to be valid after a call to ranges::begin on an input range | Yes | 0 | |
3737(i) | WP | 26.7.10.3 [range.take.sentinel] | take_view::sentinel should provide operator- | Yes | 3 | |
3449(i) | WP | 26.7.10.3 [range.take.sentinel] | take_view and take_while_view's sentinel<false> not comparable with their const iterator | Yes | 1 | |
3450(i) | WP | 26.7.11.2 [range.take.while.view] | The const overloads of take_while_view::begin/end are underconstrained | Yes | 0 | |
3364(i) | C++20 | 26.7.11.2 [range.take.while.view] | Initialize data members of ranges and their iterators | Yes | 0 | |
3298(i) | NAD | 26.7.11.2 [range.take.while.view] | Range adaptors introduced by P1035 do not require viewable_range | Yes | ||
3708(i) | WP | 26.7.11.3 [range.take.while.sentinel] | take_while_view::sentinel's conversion constructor should move | Yes | ||
3730(i) | New | 26.7.12.2 [range.drop.view] | std::ranges::drop_view may have different size type from its underlying view | Yes | 3 | |
3482(i) | WP | 26.7.12.2 [range.drop.view] | drop_view's const begin should additionally require sized_range | Yes | 0 | |
3490(i) | WP | 26.7.13.2 [range.drop.while.view] | ranges::drop_while_view::begin() is missing a precondition | Yes | 0 | |
3363(i) | C++20 | 26.7.13.2 [range.drop.while.view] | drop_while_view should opt-out of sized_range | Yes | 1 | |
3666(i) | New | 26.7.14 [range.join] | join_view's difference type is too small | No | 2 | |
3474(i) | WP | 26.7.14 [range.join] | Nesting join_views is broken because of CTAD | Yes | ||
3700(i) | Resolved | 26.7.14.2 [range.join.view] | The const begin of the join_view family does not require InnerRng to be a range | Yes | 3 | |
3322(i) | Resolved | 26.7.14.2 [range.join.view] | Add join_view::base() member function | Yes | 0 | |
3278(i) | Resolved | 26.7.14.2 [range.join.view] | join_view<V>::iterator<true> tries to write through const join_view ptr | Yes | 2 | |
3569(i) | WP | 26.7.14.3 [range.join.iterator] | join_view fails to support ranges of ranges with non-default_initializable iterators | Yes | 3 | |
3535(i) | WP | 26.7.14.3 [range.join.iterator] | join_view::iterator::iterator_category and ::iterator_concept lie | Yes | 2 | |
3517(i) | WP | 26.7.14.3 [range.join.iterator] | join_view::iterator's iter_swap is underconstrained | Yes | ||
3500(i) | WP | 26.7.14.3 [range.join.iterator] | join_view::iterator::operator->() is bogus | Yes | 0 | |
3313(i) | C++20 | 26.7.14.3 [range.join.iterator] | join_view::iterator::operator-- is incorrectly constrained | Yes | 0 | |
3791(i) | Resolved | 26.7.14.3 [range.join.iterator] | join_view::iterator::operator-- may be ill-formed | Yes | 3 | |
3365(i) | NAD | 26.7.14.3 [range.join.iterator] | Rename ref-is-glvalue to deref-is-ref | Yes | 0 | |
3873(i) | New | 26.7.15.2 [range.join.with.view] | join_with_view's const begin is underconstrained | No | 3 | |
3852(i) | New | 26.7.15.3 [range.join.with.iterator] | join_with_view::iterator's iter_move and iter_swap should be conditionally noexcept | Yes | 3 | |
3855(i) | New | 26.7.16.2 [range.lazy.split.view] | tiny-range is not quite right | Yes | 4 | |
3685(i) | New | 26.7.16.2 [range.lazy.split.view] | In lazy_split_view, CTAD doesn't work when given an input_range input and a tiny-range pattern | Yes | 3 | |
3599(i) | New | 26.7.16.2 [range.lazy.split.view] | The const overload of lazy_split_view::begin should be constrained by const Pattern | Yes | 3 | |
3592(i) | WP | 26.7.16.2 [range.lazy.split.view] | lazy_split_view needs to check the simpleness of Pattern | Yes | ||
3904(i) | Tentatively Ready | 26.7.16.3 [range.lazy.split.outer] | lazy_split_view::outer-iterator's const-converting constructor isn't setting trailing_empty_ | Yes | ||
3686(i) | New | 26.7.16.3 [range.lazy.split.outer] | In lazy_split_view, comparing a default-constructed outer-iterator or inner-iterator with std::default_sentinel results in null pointer dereference | Yes | 3 | |
3505(i) | WP | 26.7.16.3 [range.lazy.split.outer] | split_view::outer-iterator::operator++ misspecified | Yes | 2 | |
3181(i) | NAD | 26.7.16.3 [range.lazy.split.outer] | split_view::outer_iterator converting constructor is misconstrained | Yes | ||
3553(i) | WP | 26.7.16.4 [range.lazy.split.outer.value] | Useless constraint in split_view::outer-iterator::value_type::begin() | Yes | ||
3276(i) | C++20 | 26.7.16.4 [range.lazy.split.outer.value] | Class split_view::outer_iterator::value_type should inherit from view_interface | Yes | 0 | |
3532(i) | WP | 26.7.16.5 [range.lazy.split.inner] | split_view<V, P>::inner-iterator<true>::operator++(int) should depend on Base | Yes | ||
3591(i) | WP | 26.7.16.5 [range.lazy.split.inner] | lazy_split_view<input_view>::inner-iterator::base() && invalidates outer iterators | Yes | ||
3478(i) | Resolved | 26.7.17 [range.split] | views::split drops trailing empty range | Yes | 2 | |
3590(i) | WP | 26.7.17.2 [range.split.view] | split_view::base() const & is overconstrained | Yes | ||
3717(i) | WP | 26.7.19.2 [range.common.view] | common_view::end should improve random_access_range case | Yes | 3 | |
3405(i) | WP | 26.7.19.2 [range.common.view] | common_view's converting constructor is bad, too | Yes | 0 | |
3494(i) | WP | 26.7.20 [range.reverse] | Allow ranges to be conditionally borrowed | Yes | ||
3830(i) | New | 26.7.20.2 [range.reverse.view] | reverse_view should not cache when ranges::next has constant time complexity | Yes | 3 | |
3387(i) | C++20 | 26.7.20.2 [range.reverse.view] | §[range.reverse.view] reverse_view<V> unintentionally requires range<const V> | Yes | 0 | |
3811(i) | WP | 26.7.21.1 [range.as.const.overview] | views::as_const on ref_view<T> should return ref_view<const T> | Yes | ||
3850(i) | WP | 26.7.21.1 [range.as.const.overview] | views::as_const on empty_view<T> should return empty_view<const T> | Yes | ||
3386(i) | C++20 | 26.7.22 [range.elements] | elements_view needs its own sentinel type | Yes | 1 | |
3563(i) | WP | 26.7.22.1 [range.elements.overview] | keys_view example is broken | Yes | 3 | |
3797(i) | New | 26.7.22.2 [range.elements.view] | elements_view insufficiently constrained | Yes | 2 | |
3406(i) | WP | 26.7.22.2 [range.elements.view] | elements_view::begin() and elements_view::end() have incompatible constraints | Yes | 1 | |
3323(i) | C++20 | 26.7.22.2 [range.elements.view] | has-tuple-element helper concept needs convertible_to | Yes | 0 | |
3832(i) | New | 26.7.22.3 [range.elements.iterator] | Missing change for element_view::iterator in LWG 3798 | Yes | 3 | |
3492(i) | WP | 26.7.22.3 [range.elements.iterator] | Minimal improvements to elements_view::iterator | Yes | 0 | |
3502(i) | WP | 26.7.22.3 [range.elements.iterator] | elements_view should not be allowed to return dangling references | Yes | 2 | |
3377(i) | C++20 | 26.7.22.3 [range.elements.iterator] | elements_view::iterator befriends a specialization of itself | Yes | 0 | |
3558(i) | NAD Editorial | 26.7.22.4 [range.elements.sentinel] | elements_view::sentinel's first operator- has wrong return type | Yes | ||
3919(i) | New | 26.7.23 [range.enumerate] | enumerate_view may invoke UB for sized common non-forward underlying ranges | Yes | 3 | |
3912(i) | Tentatively Ready | 26.7.23.3 [range.enumerate.iterator] | enumerate_view::iterator::operator- should be noexcept |
Yes | ||
3908(i) | Tentatively NAD | 26.7.23.3 [range.enumerate.iterator] | enumerate_view::iterator constructor is explicit |
Yes | ||
3864(i) | New | 26.7.24 [range.zip] | zip over range of reference to an abstract type | No | 4 | |
3731(i) | New | 26.7.24.2 [range.zip.view] | zip_view and adjacent_view are underconstrained | Yes | 3 | |
3755(i) | WP | 26.7.24.2 [range.zip.view] | tuple-for-each can call user-defined operator, | Yes | ||
3692(i) | WP | 26.7.24.3 [range.zip.iterator] | zip_view::iterator's operator<=> is overconstrained | Yes | ||
3773(i) | WP | 26.7.25.1 [range.zip.transform.overview] | views::zip_transform still requires F to be copy_constructible when empty pack | Yes | ||
3714(i) | Tentatively NAD | 26.7.25.2 [range.zip.transform.view] | Non-single-argument constructors for range adaptors should not be explicit | Yes | 4 | |
3702(i) | WP | 26.7.25.3 [range.zip.transform.iterator] | Should zip_transform_view::iterator remove operator<? | Yes | ||
3735(i) | NAD | 26.7.26.1 [range.adjacent.overview] | views::adjacent<0> should be prohibited | Yes | ||
3848(i) | WP | 26.7.26.2 [range.adjacent.view] | adjacent_view, adjacent_transform_view and slide_view missing base accessor | Yes | ||
3710(i) | WP | 26.7.28.2 [range.chunk.view.input] | The end of chunk_view for input ranges can be const | Yes | ||
3712(i) | WP | 26.7.28.2 [range.chunk.view.input] | chunk_view and slide_view should not be default_initializable | Yes | ||
3739(i) | NAD | 26.7.28.2 [range.chunk.view.input] | chunk_view::size should preserve the signedness of the size of the underlying range | Yes | ||
3707(i) | WP | 26.7.28.4 [range.chunk.outer.value] | chunk_view::outer-iterator::value_type::size should return unsigned type | Yes | ||
3851(i) | WP | 26.7.28.5 [range.chunk.inner.iter] | chunk_view::inner-iterator missing custom iter_move and iter_swap | Yes | ||
3880(i) | WP | 26.7.28.7 [range.chunk.fwd.iter] | Clarify operator+= complexity for {chunk,stride}_view::iterator | Yes | ||
3711(i) | WP | 26.7.29.2 [range.slide.view] | Missing preconditions for slide_view constructor | Yes | ||
3740(i) | NAD | 26.7.29.2 [range.slide.view] | slide_view::size should preserve the signedness of underlying range's size | Yes | ||
3760(i) | WP | 26.7.32 [range.cartesian] | cartesian_product_view::iterator's parent_ is never valid | Yes | ||
3777(i) | Open | 26.7.32.2 [range.cartesian.view] | Common cartesian_product_view produces an invalid range if the first range is input and one of the ranges is empty | Yes | 2 | |
3820(i) | WP | 26.7.32.3 [range.cartesian.iterator] | cartesian_product_view::iterator::prev is not quite right | Yes | ||
3849(i) | WP | 26.7.32.3 [range.cartesian.iterator] | cartesian_product_view::iterator's default constructor is overconstrained | Yes | ||
3761(i) | WP | 26.7.32.3 [range.cartesian.iterator] | cartesian_product_view::iterator::operator- should pass by reference | Yes | ||
3801(i) | WP | 26.7.32.3 [range.cartesian.iterator] | cartesian_product_view::iterator::distance-from ignores the size of last underlying range | Yes | ||
3894(i) | Tentatively Ready | 26.8.5 [coro.generator.promise] | generator::promise_type::yield_value(ranges::elements_of<Rng, Alloc>) should not be noexcept | Yes | ||
3899(i) | New | 26.8.5 [coro.generator.promise] | co_yielding elements of an lvalue generator is unnecessarily inefficient | Yes | 3 | |
3900(i) | New | 26.8.5 [coro.generator.promise] | The allocator_arg_t overloads of generator::promise_type::operator new should not be constrained | Yes | 3 | |
3826(i) | WP | 26.8.5 [coro.generator.promise] | Redundant specification [for overload of yield_value] | Yes | ||
3762(i) | WP | 26.8.6 [coro.generator.iterator] | generator::iterator::operator== should pass by reference | Yes |
(view only non-Ready open issues)
Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates |
2963(i) | New | 27 [algorithms] | Algorithms with underspecified iterator requirements | No | 3 | |
1238(i) | Open | 27 [algorithms] | Defining algorithms taking iterator for range | No | 3 | |
2173(i) | Open | 27 [algorithms] | The meaning of operator + in the description of the algorithms |
Yes | 4 | |
1205(i) | C++11 | 27 [algorithms] | Some algorithms could more clearly document their handling of empty ranges | Yes | ||
92(i) | CD1 | 27 [algorithms] | Incomplete Algorithm Requirements | Yes | ||
210(i) | TC1 | 27 [algorithms] | distance first and last confused | Yes | ||
2917(i) | Resolved | 27 [algorithms] | Parallel algorithms cannot easily work with InputIterators | Yes | ||
1282(i) | NAD | 27 [algorithms] | A proposal to add std::split algorithm | Yes | ||
1053(i) | NAD | 27 [algorithms] | Unify algorithms with operator and function object variants | Yes | ||
631(i) | NAD | 27 [algorithms] | conflicting requirements for BinaryPredicate | Yes | ||
2082(i) | NAD | 27 [algorithms] | Misleading complexity requirements in <algorithm> | Yes | ||
2727(i) | C++17 | 27.1 [algorithms.general] | Parallel algorithms with constexpr specifier | Yes | 0 | |
3049(i) | Open | 27.2 [algorithms.requirements] | Missing wording allowing algorithms to use copies of function objects as substitutes for their parameters | Yes | 3 | |
3419(i) | WP | 27.2 [algorithms.requirements] | §[algorithms.requirements]/15 doesn't reserve as many rights as it intends to | Yes | 0 | |
2932(i) | C++20 | 27.3.3 [algorithms.parallel.exec] | Constraints on parallel algorithm implementations are underspecified | Yes | ||
2718(i) | C++17 | 27.3.3 [algorithms.parallel.exec] | Parallelism bug in [algorithms.parallel.exec] p2 | Yes | ||
2880(i) | Resolved | 27.3.3 [algorithms.parallel.exec] | Relax complexity specifications for non-sequenced policies | Yes | ||
3062(i) | C++20 | 27.3.5 [algorithms.parallel.overloads] | Unnecessary decay_t in is_execution_policy_v should be remove_cvref_t | Yes | 0 | |
3180(i) | C++20 | 27.4 [algorithm.syn] | Inconsistently named return type for ranges::minmax_element | Yes | 0 | |
483(i) | Dup | 27.6 [alg.nonmodifying] | Heterogeneous equality and EqualityComparable | Yes | 283 | |
3793(i) | New | 27.6.5 [alg.foreach] | Requirements for some algorithms' Size template parameters are unclear | No | 3 | |
2747(i) | C++17 | 27.6.5 [alg.foreach] | Possibly redundant std::move in [alg.foreach] | Yes | 0 | |
1110(i) | C++11 | 27.6.5 [alg.foreach] | Is for_each overconstrained? | Yes | ||
475(i) | CD1 | 27.6.5 [alg.foreach] | May the function object passed to for_each modify the elements of the iterated sequence? | Yes | ||
3213(i) | Resolved | 27.6.5 [alg.foreach] | for_each_n and copy_n missing requirements for Size | Yes | 3 | |
969(i) | NAD Editorial | 27.6.5 [alg.foreach] | What happened to Library Issue 475? | Yes | ||
290(i) | NAD | 27.6.5 [alg.foreach] | Requirements to for_each and its function object | Yes | ||
219(i) | NAD | 27.6.6 [alg.find] | find algorithm missing version that takes a binary predicate argument | Yes | ||
244(i) | NAD | 27.6.6 [alg.find] | Must find's third argument be CopyConstructible? | Yes | ||
2150(i) | C++14 | 27.6.8 [alg.find.end] | Unclear specification of find_end | Yes | ||
576(i) | CD1 | 27.6.9 [alg.find.first.of] | find_first_of is overconstrained | Yes | ||
150(i) | TC1 | 27.6.9 [alg.find.first.of] | Find_first_of says integer instead of iterator | Yes | ||
240(i) | CD1 | 27.6.10 [alg.adjacent.find] | Complexity of adjacent_find() is meaningless | Yes | ||
1000(i) | NAD Concepts | 27.6.10 [alg.adjacent.find] | adjacent_find is over-constrained | Yes | ||
2404(i) | C++17 | 27.6.12 [mismatch] | mismatch()'s complexity needs to be updated | Yes | 0 | |
3178(i) | Resolved | 27.6.12 [mismatch] | std::mismatch is missing an upper bound | Yes | 0 | |
3560(i) | WP | 27.6.13 [alg.equal] | ranges::equal and ranges::is_permutation should short-circuit for sized_ranges | Yes | ||
2967(i) | NAD | 27.6.13 [alg.equal] | std::equal on empty ranges | Yes | ||
1431(i) | C++11 | 27.6.14 [alg.is.permutation] | is_permutation must be more restrictive | Yes | ||
1338(i) | C++11 | 27.6.15 [alg.search] | LWG 1205 incorrectly applied | Yes | ||
426(i) | CD1 | 27.6.15 [alg.search] | search_n(), fill_n(), and generate_n() with negative n | Yes | ||
714(i) | CD1 | 27.6.15 [alg.search] | search_n complexity is too lax | Yes | ||
3596(i) | NAD | 27.6.16 [alg.starts.with] | ranges::starts_with and ranges::ends_with are underspecified | Yes | ||
3779(i) | NAD | 27.6.18 [alg.fold] | ranges::fold_* can unintentionally const_cast and reinterpret_cast | Yes | ||
3089(i) | New | 27.7.1 [alg.copy] | copy_n should require non-overlapping ranges | Yes | 3 | |
2471(i) | Open | 27.7.1 [alg.copy] | copy_n's number of InputIterator increments unspecified | No | 3 | |
2689(i) | C++17 | 27.7.1 [alg.copy] | Parallel versions of std::copy and std::move shouldn't be in order | Yes | 0 | |
2039(i) | C++14 | 27.7.1 [alg.copy] | Issues with std::reverse and std::copy_if | Yes | ||
2242(i) | NAD | 27.7.1 [alg.copy] | [uninitialized_]copy_n() defect | Yes | 2 | |
1206(i) | C++11 | 27.7.2 [alg.move] | Incorrect requires for move_backward and copy_backward | Yes | ||
187(i) | CD1 | 27.7.3 [alg.swap] | iter_swap underspecified | Yes | ||
809(i) | CD1 | 27.7.3 [alg.swap] | std::swap should be overloaded for array types | Yes | ||
227(i) | TC1 | 27.7.3 [alg.swap] | std::swap() should require CopyConstructible or DefaultConstructible arguments | Yes | ||
912(i) | NAD Concepts | 27.7.3 [alg.swap] | Array swap needs to be conceptualized | Yes | ||
242(i) | CD1 | 27.7.4 [alg.transform] | Side effects of function objects | Yes | ||
293(i) | NAD | 27.7.4 [alg.transform] | Order of execution in transform algorithm | Yes | ||
3868(i) | LEWG | 27.7.5 [alg.replace] | Constrained algorithms should not require output_iterator | Yes | 4 | |
283(i) | CD1 | 27.7.5 [alg.replace] | std::replace() requirement incorrect/insufficient | Yes | 483 | |
337(i) | CD1 | 27.7.5 [alg.replace] | replace_copy_if's template parameter should be InputIterator | Yes | ||
913(i) | NAD Concepts | 27.7.5 [alg.replace] | Superfluous requirements for replace algorithms | Yes | ||
1087(i) | NAD Concepts | 27.7.5 [alg.replace] | Incorrect OutputIterator concept requirements for replace algorithms | Yes | ||
865(i) | C++11 | 27.7.6 [alg.fill] | More algorithms that throw away information | Yes | ||
3186(i) | C++20 | 27.7.8 [alg.remove] | ranges removal, partition, and partial_sort_copy algorithms discard useful information | Yes | 1 | |
2110(i) | C++14 | 27.7.8 [alg.remove] | remove can't swap but note says it might | Yes | ||
779(i) | CD1 | 27.7.8 [alg.remove] | Resolution of #283 incomplete | Yes | ||
367(i) | NAD | 27.7.8 [alg.remove] | remove_copy/remove_copy_if and Input Iterators | Yes | ||
489(i) | NAD | 27.7.8 [alg.remove] | std::remove / std::remove_if wrongly specified | Yes | ||
2439(i) | C++17 | 27.7.9 [alg.unique] | unique_copy() sometimes can't fall back to reading its output | Yes | 3 | |
1241(i) | C++11 | 27.7.9 [alg.unique] | unique_copy needs to require EquivalenceRelation | Yes | ||
202(i) | CD1 | 27.7.9 [alg.unique] | unique() effects unclear when predicate not an equivalence relation | Yes | ||
239(i) | CD1 | 27.7.9 [alg.unique] | Complexity of unique() and/or unique_copy incorrect | Yes | ||
241(i) | CD1 | 27.7.9 [alg.unique] | Does unique_copy() require CopyConstructible and Assignable? | Yes | ||
538(i) | CD1 | 27.7.9 [alg.unique] | 241 again: Does unique_copy() require CopyConstructible and Assignable? | Yes | ||
1101(i) | NAD Editorial | 27.7.9 [alg.unique] | unique requirements | Yes | ||
481(i) | NAD | 27.7.9 [alg.unique] | unique's effects on the range [result, last) | Yes | ||
490(i) | NAD | 27.7.9 [alg.unique] | std::unique wrongly specified | Yes | ||
914(i) | NAD Concepts | 27.7.9 [alg.unique] | Superfluous requirement for unique | Yes | ||
2985(i) | LEWG | 27.7.10 [alg.reverse] | std::reverse should be permitted to be vectorized | Yes | ||
2074(i) | C++14 | 27.7.10 [alg.reverse] | Off by one error in std::reverse_copy | Yes | ||
223(i) | TC1 | 27.7.10 [alg.reverse] | reverse algorithm should use iter_swap rather than swap | Yes | ||
3759(i) | WP | 27.7.11 [alg.rotate] | ranges::rotate_copy should use std::move | Yes | ||
488(i) | CD1 | 27.7.11 [alg.rotate] | rotate throws away useful information | Yes | ||
2405(i) | NAD | 27.7.11 [alg.rotate] | rotate()'s return value is incorrect when middle == first | Yes | ||
2716(i) | C++17 | 27.7.12 [alg.random.sample] | Specification of shuffle and sample disallows lvalue URNGs | Yes | 0 | |
3191(i) | C++20 | 27.7.13 [alg.random.shuffle] | std::ranges::shuffle synopsis does not match algorithm definition | Yes | 1 | |
1432(i) | C++11 | 27.7.13 [alg.random.shuffle] | random_shuffle signatures are inconsistent | Yes | 1433 | |
552(i) | CD1 | 27.7.13 [alg.random.shuffle] | random_shuffle and its generator | Yes | ||
1093(i) | Resolved | 27.7.13 [alg.random.shuffle] | Multiple definitions for random_shuffle algorithm | Yes | ||
1433(i) | Dup | 27.7.13 [alg.random.shuffle] | random_shuffle and shuffle should have consistent signatures | Yes | 1432 | |
3031(i) | C++20 | 27.8 [alg.sorting] | Algorithms and predicates with non-const reference arguments | Yes | 2 | |
2492(i) | C++17 | 27.8 [alg.sorting] | Clarify requirements for comp | Yes | 0 | |
556(i) | C++11 | 27.8 [alg.sorting] | Is Compare a BinaryPredicate? | Yes | ||
218(i) | NAD | 27.8 [alg.sorting] | Algorithms do not use binary predicate objects for default comparisons | Yes | ||
3713(i) | WP | 27.8.1 [alg.sorting.general] | Sorted with respect to comparator (only) | Yes | ||
812(i) | NAD Editorial | 27.8.2 [alg.sort] | unsolicited multithreading considered harmful? | Yes | ||
713(i) | CD1 | 27.8.2.1 [sort] | sort() complexity is too lax | Yes | ||
499(i) | NAD Editorial | 27.8.2.2 [stable.sort] | Std. doesn't seem to require stable_sort() to be stable! | Yes | ||
2267(i) | New | 27.8.2.4 [partial.sort.copy] | partial_sort_copy underspecified for ranges of two different types | No | 3 | |
2339(i) | C++14 | 27.8.3 [alg.nth.element] | Wording issue in nth_element | Yes | 0 | |
2163(i) | C++14 | 27.8.3 [alg.nth.element] | nth_element requires inconsistent post-conditions | Yes | ||
270(i) | CD1 | 27.8.4 [alg.binary.search] | Binary search requirements overly strict | Yes | 472 | |
191(i) | NAD | 27.8.4 [alg.binary.search] | Unclear complexity for algorithms such as binary search | Yes | ||
577(i) | CD1 | 27.8.4.3 [upper.bound] | upper_bound(first, last, ...) cannot return last | Yes | ||
384(i) | CD1 | 27.8.4.4 [equal.range] | equal_range has unimplementable runtime complexity | Yes | ||
472(i) | Dup | 27.8.4.4 [equal.range] | Missing "Returns" clause in std::equal_range | Yes | 270 | |
787(i) | CD1 | 27.8.4.5 [binary.search] | complexity of binary_search | Yes | ||
2357(i) | C++14 | 27.8.5 [alg.partitions] | Remaining "Assignable" requirement | Yes | 0 | |
498(i) | C++11 | 27.8.5 [alg.partitions] | Requirements for partition() and stable_partition() too strong | Yes | ||
2741(i) | Resolved | 27.8.5 [alg.partitions] | is_partitioned requirements need updating | Yes | 3 | |
2973(i) | LEWG | 27.8.6 [alg.merge] | inplace_merge exact comparison count complexity prohibits useful real-world optimizations | Yes | ||
780(i) | C++11 | 27.8.6 [alg.merge] | std::merge() specification incorrect/insufficient | Yes | ||
291(i) | CD1 | 27.8.7 [alg.set.operations] | Underspecification of set algorithms | Yes | ||
411(i) | CD1 | 27.8.7 [alg.set.operations] | Wrong names of set member functions | Yes | ||
3115(i) | Resolved | 27.8.7.2 [includes] | Unclear description for algorithm includes | Yes | 3 | |
862(i) | NAD Editorial | 27.8.7.2 [includes] | Impossible complexity for 'includes' | Yes | ||
1109(i) | NAD Concepts | 27.8.7.2 [includes] | std::includes should require CopyConstructible predicate | Yes | ||
3534(i) | LEWG | 27.8.7.4 [set.intersection] | ranges::set_intersection and ranges::set_difference algorithm requirements are too strict | Yes | 3 | |
3032(i) | WP | 27.8.8 [alg.heap.operations] | ValueSwappable requirement missing for push_heap and make_heap | Yes | 3 | |
2166(i) | C++17 | 27.8.8 [alg.heap.operations] | Heap property underspecified? | Yes | 3 | |
193(i) | TC1 | 27.8.8 [alg.heap.operations] | Heap operations description incorrect | Yes | 216 | |
3029(i) | Open | 27.8.8.3 [pop.heap] | pop_heap over-constrains input | Yes | 3 | |
2444(i) | C++20 | 27.8.8.5 [sort.heap] | Inconsistent complexity for std::sort_heap | Yes | 3 | |
2239(i) | C++17 | 27.8.9 [alg.min.max] | min/max/minmax requirements | Yes | 3 | |
2325(i) | C++17 | 27.8.9 [alg.min.max] | minmax_element()'s behavior differing from max_element()'s should be noted | Yes | 3 | |
2369(i) | C++17 | 27.8.9 [alg.min.max] | constexpr max(initializer_list) vs max_element | Yes | 3 | |
2350(i) | C++14 | 27.8.9 [alg.min.max] | min, max, and minmax should be constexpr | Yes | 1 | |
281(i) | CD1 | 27.8.9 [alg.min.max] | std::min() and max() requirements overly restrictive | Yes | 486 | |
715(i) | CD1 | 27.8.9 [alg.min.max] | minmax_element complexity is too lax | Yes | ||
212(i) | TC1 | 27.8.9 [alg.min.max] | Empty range behavior unclear for several algorithms | Yes | ||
915(i) | NAD Editorial | 27.8.9 [alg.min.max] | minmax with initializer_list should return pair of T, not pair of const T& | Yes | ||
1013(i) | NAD Editorial | 27.8.9 [alg.min.max] | Remove IsSameType hold-over constraints | Yes | ||
1434(i) | NAD Editorial | 27.8.9 [alg.min.max] | For min/max functions replace variadic arguments by initializer_list argument | Yes | ||
1308(i) | NAD | 27.8.9 [alg.min.max] | Concerns about initializer_list overloads of min, max, and minmax | Yes | ||
190(i) | NAD | 27.8.9 [alg.min.max] | min() and max() functions should be std::binary_functions | Yes | ||
486(i) | Dup | 27.8.9 [alg.min.max] | min/max CopyConstructible requirement is too strict | Yes | 281 | |
2688(i) | C++17 | 27.8.10 [alg.clamp] | clamp misses preconditions and has extraneous condition on result | Yes | 0 | |
142(i) | TC1 | 27.8.11 [alg.lex.comparison] | lexicographical_compare complexity wrong | Yes | ||
3410(i) | WP | 27.8.12 [alg.three.way] | lexicographical_compare_three_way is overspecified | Yes | 3 | |
3350(i) | C++20 | 27.8.12 [alg.three.way] | Simplify return type of lexicographical_compare_three_way | Yes | 0 | |
3061(i) | Resolved | 27.8.12 [alg.three.way] | What is the return type of compare_3way? | Yes | 2 | |
3169(i) | C++20 | 27.8.13 [alg.permutation.generators] | ranges permutation generators discard useful information | Yes | 0 | |
3487(i) | New | 27.10 [numeric.ops] | Missing precondition on input and output aliasing of [numeric.ops] | No | 3 | |
2055(i) | Resolved | 27.10 [numeric.ops] | std::move in std::accumulate and other algorithms | Yes | 3 | |
2924(i) | Resolved | 27.10 [numeric.ops] | An ExecutionPolicy overload for inner_product() seems impractical | Yes | ||
1067(i) | NAD Concepts | 27.10 [numeric.ops] | simplified wording for inner_product | Yes | ||
2918(i) | Resolved | 27.10.5 [inner.product] | Possible need for extra storage in inner_product | Yes | ||
3048(i) | C++20 | 27.10.6 [transform.reduce] | transform_reduce(exec, first1, last1, first2, init) discards execution policy | Yes | 0 | |
539(i) | C++11 | 27.10.7 [partial.sum] | partial_sum and adjacent_difference should mention requirements | Yes | ||
3060(i) | New | 27.10.8 [exclusive.scan] | XXX_scan algorithms are specified to work with move-only T, but are specified to make N copies of T into the destination range | No | 2 | |
2687(i) | C++17 | 27.10.8 [exclusive.scan] | {inclusive,exclusive}_scan misspecified | Yes | 1 | |
3222(i) | C++20 | 27.10.9 [inclusive.scan] | P0574R1 introduced preconditions on non-existent parameters | Yes | 0 | |
3463(i) | New | 27.10.11 [transform.inclusive.scan] | Incorrect requirements for transform_inclusive_scan without initial value | Yes | 3 | |
3058(i) | C++20 | 27.10.12 [adjacent.difference] | Parallel adjacent_difference shouldn't require creating temporaries | Yes | 3 | |
2919(i) | Resolved | 27.10.12 [adjacent.difference] | The specification for adjacent_difference has baked-in sequential semantics | Yes | ||
871(i) | C++11 | 27.10.13 [numeric.iota] | Iota's requirements on T are too strong | Yes | ||
2837(i) | C++17 | 27.10.14 [numeric.ops.gcd] | gcd and lcm should support a wider range of input values | Yes | 0 | |
2759(i) | C++17 | 27.10.14 [numeric.ops.gcd] | gcd / lcm and bool for the WP | Yes | ||
3200(i) | C++20 | 27.10.16 [numeric.ops.midpoint] | midpoint should not constrain T is complete | Yes | 2 | |
3628(i) | New | 27.11 [specialized.algorithms] | "Effects: Equivalent to:" and uninitialized memory algorithms | No | 3 | |
3063(i) | New | 27.11 [specialized.algorithms] | Parallel algorithms in <memory> are underspecified | No | 3 | |
3064(i) | New | 27.11 [specialized.algorithms] | How do uninitialized memory algorithms obtain pointer without undefined behavior? | No | 3 | |
2433(i) | C++17 | 27.11 [specialized.algorithms] | uninitialized_copy()/etc. should tolerate overloaded operator& | Yes | 0 | |
866(i) | C++11 | 27.11 [specialized.algorithms] | Qualification of placement new-expressions | Yes | ||
999(i) | C++11 | 27.11 [specialized.algorithms] | Taking the address of a function | Yes | ||
3156(i) | Resolved | 27.11 [specialized.algorithms] | ForwardIterator should only mean forward iterator | Yes | 3 | |
1029(i) | NAD Concepts | 27.11 [specialized.algorithms] | Specialized algorithms for memory management need to be concept-constrained templates | Yes | ||
3870(i) | WP | 27.11.1 [specialized.algorithms.general] | Remove voidify | Yes | ||
3647(i) | New | 27.11.2 [special.mem.concepts] | nothrow-input-iterator constraints should not mention copying | Yes | 3 | |
3747(i) | WP | 27.11.5 [uninitialized.copy] | ranges::uninitialized_copy_n, ranges::uninitialized_move_n, and ranges::destroy_n should use std::move | Yes | ||
3054(i) | C++20 | 27.11.5 [uninitialized.copy] | uninitialized_copy appears to not be able to meet its exception-safety guarantee | Yes | 2 | |
3355(i) | C++20 | 27.11.5 [uninitialized.copy] | The memory algorithms should support move-only input iterators introduced by P1207 | Yes | 2 | |
754(i) | NAD Editorial | 27.11.5 [uninitialized.copy] | Ambiguous return clause for std::uninitialized_copy | Yes | ||
582(i) | NAD | 27.11.5 [uninitialized.copy] | specialized algorithms and volatile storage | Yes | ||
3918(i) | LEWG | 27.11.6 [uninitialized.move] | std::uninitialized_move/_n and guaranteed copy elision | Yes | 3 | |
1339(i) | C++11 | 27.11.7 [uninitialized.fill] | uninitialized_fill_n should return the end of its range | Yes | ||
3888(i) | New | 27.11.8 [specialized.construct] | Most ranges uninitialized memory algorithms are underconstrained | Yes | 3 | |
3436(i) | New | 27.11.8 [specialized.construct] | std::construct_at should support arrays | Yes | 2 | |
3889(i) | New | 27.11.9 [specialized.destroy] | std::(ranges::)destroy_at should destroy array elements in the decreasing index order | Yes | 3 | |
3521(i) | WP | 27.12 [alg.c.library] | Overly strict requirements on qsort and bsearch | Yes | ||
286(i) | CD1 | 27.12 [alg.c.library] | <cstdlib> requirements missing size_t typedef | Yes | ||
405(i) | CD1 | 27.12 [alg.c.library] | qsort and POD | Yes |
(view only non-Ready open issues)
Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates |
860(i) | C++11 | 28 [numerics] | Floating-Point State | Yes | ||
1140(i) | NAD Concepts | 28 [numerics] | Numerics library not concept enabled | Yes | ||
3133(i) | C++20 | 28.2 [numeric.requirements] | Modernizing numeric type requirements | Yes | 0 | |
2699(i) | C++17 | 28.2 [numeric.requirements] | Missing restriction in [numeric.requirements] | Yes | 3 | |
3905(i) | Tentatively Ready | 28.3.1 [cfenv.syn] | Type of std::fexcept_t | Yes | ||
387(i) | CD1 | 28.4 [complex.numbers] | std::complex over-encapsulated | Yes | ||
2693(i) | Resolved | 28.4 [complex.numbers] | constexpr for various std::complex arithmetic and value operators | Yes | 3 | |
1154(i) | NAD | 28.4 [complex.numbers] | complex should accept integral types | Yes | ||
1217(i) | NAD | 28.4 [complex.numbers] | Quaternion support | Yes | ||
388(i) | NAD | 28.4 [complex.numbers] | Use of complex as a key in associative containers | Yes | ||
79(i) | TC1 | 28.4.2 [complex.syn] | Inconsistent declaration of polar() | Yes | ||
80(i) | TC1 | 28.4.2 [complex.syn] | Global Operators of complex declared twice | Yes | ||
3935(i) | Tentatively Ready | 28.4.3 [complex] | template<class X> constexpr complex& operator=(const complex<X>&) has no specification | Yes | ||
3933(i) | New | 28.4.3 [complex] | P1467R9 accidentally changed the signatures of certain constructors of std::complex | Yes | 4 | |
3934(i) | New | 28.4.3 [complex] | std::complex<T>::operator=(const T&) has no specification | Yes | 3 | |
2714(i) | New | 28.4.6 [complex.ops] | complex stream extraction underspecified | Yes | 3 | |
629(i) | CD1 | 28.4.6 [complex.ops] | complex<T> insertion and locale dependence | Yes | ||
146(i) | TC1 | 28.4.6 [complex.ops] | complex<T> Inserter and Extractor need sentries | Yes | ||
177(i) | NAD | 28.4.6 [complex.ops] | Complex operators cannot be explicitly instantiated | Yes | ||
2870(i) | C++20 | 28.4.7 [complex.value.ops] | Default value of parameter theta of polar should be dependent | Yes | ||
2459(i) | C++17 | 28.4.7 [complex.value.ops] | std::polar should require a non-negative rho | Yes | 0 | |
1435(i) | C++11 | 28.4.7 [complex.value.ops] | Unclear returns specifications for C99 complex number functions | Yes | ||
595(i) | CD1 | 28.4.7 [complex.value.ops] | TR1/C++0x: fabs(complex<T>) redundant / wrongly specified | Yes | ||
781(i) | CD1 | 28.4.7 [complex.value.ops] | std::complex should add missing C99 functions | Yes | ||
2597(i) | C++20 | 28.4.8 [complex.transcendentals] | std::log misspecified for complex numbers | Yes | 3 | |
440(i) | NAD | 28.4.8 [complex.transcendentals] | Should std::complex use unqualified transcendentals? | Yes | ||
2846(i) | New | 28.4.9 [cmplx.over] | Undefined phrase "effectively cast" | Yes | 3 | |
1137(i) | C++11 | 28.4.9 [cmplx.over] | Return type of conj and proj | Yes | ||
1522(i) | C++11 | 28.4.9 [cmplx.over] | conj specification is now nonsense | Yes | ||
844(i) | CD1 | 28.4.9 [cmplx.over] | complex pow return type is ambiguous | Yes | ||
507(i) | CD1 | 28.5 [rand] | Missing requirement for variate_generator::operator() | Yes | ||
699(i) | CD1 | 28.5 [rand] | N2111 changes min/max | Yes | ||
506(i) | NAD | 28.5 [rand] | Requirements of Distribution parameter for variate_generator | Yes | ||
547(i) | NAD | 28.5 [rand] | division should be floating-point, not integer | Yes | ||
572(i) | NAD | 28.5 [rand] | Oops, we gave 507 WP status | Yes | ||
1056(i) | NAD | 28.5 [rand] | Must all Engines and Distributions be Streamable? | Yes | ||
1057(i) | NAD Concepts | 28.5 [rand] | RandomNumberEngineAdaptor | Yes | ||
656(i) | NAD Editorial | 28.5.2 [rand.synopsis] | Typo in subtract_with_carry_engine declaration | Yes | ||
515(i) | NAD | 28.5.2 [rand.synopsis] | Random number engine traits | Yes | ||
505(i) | CD1 | 28.5.3 [rand.req] | Result_type in random distribution requirements | Yes | ||
504(i) | NAD Editorial | 28.5.3 [rand.req] | Integer types in pseudo-random number engine requirements | Yes | ||
517(i) | NAD | 28.5.3 [rand.req] | Should include name in external representation | Yes | ||
2326(i) | NAD | 28.5.3.1 [rand.req.genl] | uniform_int_distribution<unsigned char> should be permitted | Yes | 2 | |
2181(i) | C++17 | 28.5.3.2 [rand.req.seedseq] | Exceptions from seed sequence operations | Yes | 3 | |
2124(i) | NAD | 28.5.3.2 [rand.req.seedseq] | Seed sequence over-specified | Yes | ||
3150(i) | C++20 | 28.5.3.3 [rand.req.urng] | UniformRandomBitGenerator should validate min and max | Yes | 3 | |
2154(i) | Resolved | 28.5.3.3 [rand.req.urng] | What exactly does compile-time complexity imply? | Yes | 4 | |
2327(i) | NAD | 28.5.3.3 [rand.req.urng] | Non-power-of-two URNGs should be forbidden | Yes | ||
654(i) | CD1 | 28.5.3.4 [rand.req.eng] | Missing IO roundtrip for random number engines | Yes | ||
678(i) | CD1 | 28.5.3.4 [rand.req.eng] | Changes for [rand.req.eng] | Yes | ||
729(i) | NAD | 28.5.3.4 [rand.req.eng] | Problem in [rand.req.eng]/3 | Yes | ||
730(i) | NAD | 28.5.3.5 [rand.req.adapt] | Comment on [rand.req.adapt]/3 e) | Yes | ||
1235(i) | NAD | 28.5.3.6 [rand.req.dist] | Issue with C++0x random number proposal | Yes | ||
733(i) | NAD | 28.5.3.6 [rand.req.dist] | Comment on [rand.req.dist]/9 | Yes | ||
3519(i) | WP | 28.5.4 [rand.eng] | Incomplete synopses for <random> classes | Yes | 3 | |
1436(i) | C++11 | 28.5.4 [rand.eng] | Random number engine constructor concerns | Yes | ||
512(i) | NAD Editorial | 28.5.4 [rand.eng] | Seeding subtract_with_carry_01 from a single unsigned long | Yes | ||
513(i) | NAD Editorial | 28.5.4 [rand.eng] | Size of state for subtract_with_carry_01 | Yes | ||
516(i) | NAD Editorial | 28.5.4 [rand.eng] | Seeding subtract_with_carry_01 using a generator | Yes | ||
2351(i) | NAD | 28.5.4 [rand.eng] | Does .seed() completely reset state of engine? | Yes | 2 | |
1437(i) | C++11 | 28.5.4.3 [rand.eng.mers] | Mersenne twister meaningless for word sizes less than two | Yes | ||
728(i) | CD1 | 28.5.4.3 [rand.eng.mers] | Problem in [rand.eng.mers]/6 | Yes | ||
799(i) | NAD | 28.5.4.3 [rand.eng.mers] | Mersenne twister equality overspecified | Yes | ||
3809(i) | New | 28.5.4.4 [rand.eng.sub] | Is std::subtract_with_carry_engine<uint16_t> supposed to work? | Yes | 3 | |
514(i) | NAD Editorial | 28.5.4.4 [rand.eng.sub] | Size of state for subtract_with_carry | Yes | ||
3561(i) | WP | 28.5.5.2 [rand.adapt.disc] | Issue with internal counter in discard_block_engine | Yes | ||
1438(i) | C++11 | 28.5.5.2 [rand.adapt.disc] | No definition for base() | Yes | ||
738(i) | NAD Editorial | 28.5.5.2 [rand.adapt.disc] | Editorial issue in [rand.adapt.disc]/3 | Yes | ||
609(i) | CD1 | 28.5.5.3 [rand.adapt.ibits] | missing static const | Yes | ||
508(i) | CD1 | 28.5.6 [rand.predef] | Bad parameters for ranlux64_base_01 | Yes | ||
796(i) | NAD | 28.5.6 [rand.predef] | ranlux48_base returns wrong value | Yes | ||
797(i) | NAD | 28.5.6 [rand.predef] | ranlux48 returns wrong value | Yes | ||
802(i) | NAD | 28.5.6 [rand.predef] | knuth_b returns wrong value | Yes | ||
548(i) | NAD | 28.5.7 [rand.device] | May random_device block? | Yes | ||
1068(i) | NAD | 28.5.7 [rand.device] | class random_device should be movable | Yes | ||
3422(i) | WP | 28.5.8.1 [rand.util.seedseq] | Issues of seed_seq's constructors | Yes | 3 | |
2440(i) | C++17 | 28.5.8.1 [rand.util.seedseq] | seed_seq::size() should be noexcept | Yes | 0 | |
2180(i) | C++14 | 28.5.8.1 [rand.util.seedseq] | Exceptions from std::seed_seq operations | Yes | ||
607(i) | CD1 | 28.5.8.1 [rand.util.seedseq] | Concern about short seed vectors | Yes | ||
608(i) | CD1 | 28.5.8.1 [rand.util.seedseq] | Unclear seed_seq construction details | Yes | ||
677(i) | CD1 | 28.5.8.1 [rand.util.seedseq] | Weaknesses in seed_seq::randomize [rand.util.seedseq] | Yes | ||
712(i) | CD1 | 28.5.8.1 [rand.util.seedseq] | seed_seq::size no longer useful | Yes | ||
782(i) | CD1 | 28.5.8.1 [rand.util.seedseq] | Extended seed_seq constructor is useless | Yes | ||
800(i) | Resolved | 28.5.8.1 [rand.util.seedseq] | Issues in 26.4.7.1 [rand.util.seedseq](6) | Yes | ||
803(i) | Resolved | 28.5.8.1 [rand.util.seedseq] | Simplification of seed_seq::seq_seq | Yes | ||
2352(i) | NAD | 28.5.8.1 [rand.util.seedseq] | Is a default-constructed std::seed_seq intended to produce a predictable .generate()? | Yes | 2 | |
731(i) | NAD | 28.5.8.1 [rand.util.seedseq] | proposal for a customizable seed_seq | Yes | ||
1069(i) | NAD | 28.5.8.1 [rand.util.seedseq] | class seed_seq should support efficient move operations | Yes | ||
1313(i) | NAD | 28.5.8.1 [rand.util.seedseq] | Seed sequence's param function not useful for pure output iterator | Yes | ||
655(i) | CD1 | 28.5.8.2 [rand.util.canonical] | Signature of generate_canonical not useful | Yes | ||
739(i) | NAD | 28.5.8.2 [rand.util.canonical] | Defect in [rand.util.canonical]/3 | Yes | ||
549(i) | NAD Editorial | 28.5.9 [rand.dist] | Undefined variable in binomial_distribution | Yes | ||
511(i) | NAD | 28.5.9 [rand.dist] | Input_type for binomial_distribution | Yes | ||
509(i) | NAD | 28.5.9.2 [rand.dist.uni] | Uniform_int template parameters | Yes | ||
773(i) | NAD | 28.5.9.2 [rand.dist.uni] | issues with random | Yes | ||
2168(i) | C++17 | 28.5.9.2.2 [rand.dist.uni.real] | Inconsistent specification of uniform_real_distribution constructor | Yes | 3 | |
510(i) | NAD | 28.5.9.3 [rand.dist.bern] | Input_type for bernoulli_distribution | Yes | ||
735(i) | NAD | 28.5.9.3.2 [rand.dist.bern.bin] | Unfortunate naming | Yes | ||
3402(i) | New | 28.5.9.3.4 [rand.dist.bern.negbin] | Wording for negative_binomial_distribution is unclear as a consequence of LWG 2406 resolution | No | 3 | |
2406(i) | C++17 | 28.5.9.3.4 [rand.dist.bern.negbin] | negative_binomial_distribution should reject p == 1 | Yes | 3 | |
2524(i) | Open | 28.5.9.4.2 [rand.dist.pois.exp] | generate_canonical can occasionally return 1.0 | No | 2 | |
734(i) | CD1 | 28.5.9.5.3 [rand.dist.norm.chisq] | Unnecessary restriction in [rand.dist.norm.chisq] | Yes | ||
793(i) | Resolved | 28.5.9.6.1 [rand.dist.samp.discrete] | discrete_distribution missing constructor | Yes | ||
874(i) | Resolved | 28.5.9.6.1 [rand.dist.samp.discrete] | Missing initializer_list constructor for discrete_distribution | Yes | ||
736(i) | NAD | 28.5.9.6.1 [rand.dist.samp.discrete] | Comment on [rand.dist.samp.discrete] | Yes | ||
1439(i) | C++11 | 28.5.9.6.2 [rand.dist.samp.pconst] | Return from densities() functions? | Yes | ||
792(i) | CD1 | 28.5.9.6.2 [rand.dist.samp.pconst] | piecewise_constant_distribution is undefined for a range with just one endpoint | Yes | ||
794(i) | Resolved | 28.5.9.6.2 [rand.dist.samp.pconst] | piecewise_constant_distribution missing constructor | Yes | ||
875(i) | Resolved | 28.5.9.6.2 [rand.dist.samp.pconst] | Missing initializer_list constructor for piecewise_constant_distribution | Yes | ||
737(i) | NAD | 28.5.9.6.2 [rand.dist.samp.pconst] | Comment on [rand.dist.samp.pconst] | Yes | ||
791(i) | NAD | 28.5.9.6.2 [rand.dist.samp.pconst] | piecewise_constant_distribution::densities has wrong name | Yes | ||
1440(i) | C++11 | 28.5.9.6.3 [rand.dist.samp.plinear] | Incorrect specification for piecewise_linear_distribution | Yes | ||
2058(i) | C++14 | 28.6 [numarray] | valarray and begin/end | Yes | ||
621(i) | CD1 | 28.6 [numarray] | non-const copy assignment operators of helper arrays | Yes | ||
93(i) | NAD | 28.6 [numarray] | Incomplete Valarray Subset Definitions | Yes | ||
125(i) | TC1 | 28.6.2 [template.valarray] | valarray<T>::operator!() return type is inconsistent | Yes | ||
107(i) | NAD | 28.6.2 [template.valarray] | Valarray constructor is strange | Yes | ||
630(i) | C++11 | 28.6.2.2 [valarray.cons] | arrays of valarray | Yes | ||
1208(i) | C++11 | 28.6.2.2 [valarray.cons] | valarray initializer_list constructor has incorrect effects | Yes | ||
253(i) | CD1 | 28.6.2.2 [valarray.cons] | valarray helper functions are almost entirely useless | Yes | ||
620(i) | CD1 | 28.6.2.2 [valarray.cons] | valid uses of empty valarrays | Yes | ||
867(i) | NAD Editorial | 28.6.2.2 [valarray.cons] | Valarray and value-initialization | Yes | ||
2071(i) | C++14 | 28.6.2.3 [valarray.assign] | std::valarray move-assignment | Yes | ||
624(i) | CD1 | 28.6.2.3 [valarray.assign] | valarray assignment and arrays of unequal length |
Yes | ||
389(i) | CD1 | 28.6.2.4 [valarray.access] | Const overload of valarray::operator[] returns by value | Yes | 77 | |
636(i) | NAD Editorial | 28.6.2.4 [valarray.access] | 26.5.2.3 valarray::operator[] | Yes | ||
717(i) | NAD Editorial | 28.6.2.4 [valarray.access] | Incomplete valarray::operator[] specification in [valarray.access] | Yes | ||
77(i) | Dup | 28.6.2.4 [valarray.access] | Valarray operator[] const returning value | Yes | 389 | |
430(i) | C++11 | 28.6.2.5 [valarray.sub] | valarray subset operations | Yes | ||
188(i) | NAD | 28.6.2.7 [valarray.cassign] | valarray helpers missing augmented assignment operators | Yes | ||
1243(i) | NAD | 28.6.2.7 [valarray.cassign] | Missing operator+= (initializer_list<T>) for valarray | Yes | ||
618(i) | CD1 | 28.6.2.8 [valarray.members] | valarray::cshift() effects on empty array | Yes | ||
3074(i) | C++20 | 28.6.3 [valarray.nonmembers] | Non-member functions for valarray should only deduce from the valarray | Yes | 0 | |
543(i) | CD1 | 28.6.4 [class.slice] | valarray slice default constructor | Yes | ||
2423(i) | New | 28.6.5 [template.slice.array] | Missing specification slice_array, gslice_array, mask_array, indirect_array copy constructor | Yes | 4 | |
106(i) | TC1 | 28.6.5 [template.slice.array] | Numeric library private members are implementation defined | Yes | ||
81(i) | NAD | 28.6.5 [template.slice.array] | Wrong declaration of slice operations | Yes | ||
123(i) | CD1 | 28.6.5.4 [slice.arr.fill] | Should valarray helper arrays fill functions be const? | Yes | ||
2115(i) | Open | 28.6.8 [template.mask.array] | Undefined behaviour for valarray assignments with mask_array index? | No | 4 | |
3693(i) | New | 28.7 [c.math] | §[c.math] Can any of float/double/long double overloads be fused into template overloads? | No | 2 | |
2192(i) | C++17 | 28.7 [c.math] | Validity and return type of std::abs(0u) is unclear | Yes | 2 | |
2735(i) | C++17 | 28.7 [c.math] | std::abs(short), std::abs(signed char) and others should return int instead of double in order to be compatible with C++98 and C | Yes | 3 | |
2086(i) | C++14 | 28.7 [c.math] | Overly generic type support for math functions | Yes | ||
1134(i) | C++11 | 28.7 [c.math] | Redundant specification of <stdint.h>, <fenv.h>, <tgmath.h>, and maybe <complex.h> | Yes | ||
1441(i) | C++11 | 28.7 [c.math] | Floating-point test functions are incorrectly specified | Yes | ||
295(i) | CD1 | 28.7 [c.math] | Is abs defined in <cmath>? | Yes | ||
395(i) | CD1 | 28.7 [c.math] | inconsistencies in the definitions of rand() and random_shuffle() | Yes | ||
550(i) | CD1 | 28.7 [c.math] | What should the return type of pow(float,int) be? | Yes | ||
722(i) | CD1 | 28.7 [c.math] | Missing [c.math] functions nanf and nanl | Yes | ||
2294(i) | Resolved | 28.7 [c.math] | <cstdlib> should declare abs(double) | Yes | 2 | |
1327(i) | Resolved | 28.7 [c.math] | templates defined in <cmath> replacing C macros with the same name | Yes | ||
637(i) | NAD Editorial | 28.7 [c.math] | §[c.math]/10 inconsistent return values | Yes | ||
357(i) | NAD Editorial | 28.7 [c.math] | <cmath> float functions cannot return HUGE_VAL | Yes | ||
690(i) | NAD Editorial | 28.7 [c.math] | abs(long long) should return long long | Yes | ||
213(i) | NAD | 28.7 [c.math] | Math function overloads ambiguous | Yes | ||
289(i) | NAD | 28.7 [c.math] | <cmath> requirements missing C float and long double versions | Yes | ||
323(i) | NAD | 28.7 [c.math] | abs() overloads in different headers | Yes | ||
583(i) | NAD | 28.7 [c.math] | div() for unsigned integral types | Yes | ||
584(i) | NAD | 28.7 [c.math] | missing int pow(int,int) functionality | Yes | ||
2079(i) | NAD | 28.7 [c.math] | Required pow() overloads | Yes | 3 | |
2474(i) | NAD | 28.7 [c.math] | <cmath> functions unfriendly to integral_constant arguments | Yes | 4 | |
2847(i) | New | 28.7.1 [cmath.syn] | sin(float) should call sinf(float) | No | 3 | |
2923(i) | New | 28.7.1 [cmath.syn] | noexcept is inconsistently applied across headers which import components of the C standard library | No | 4 | |
3790(i) | WP | 28.7.1 [cmath.syn] | P1467 accidentally changed nexttoward's signature | Yes | 1 | |
3051(i) | C++20 | 28.7.1 [cmath.syn] | Floating point classifications were inadvertently changed in P0175 | Yes | 0 | |
3223(i) | Resolved | 28.7.1 [cmath.syn] | lerp should not add the "sufficient additional overloads" | Yes | 2 | |
3234(i) | Resolved | 28.7.1 [cmath.syn] | Sufficient Additional Special Math Overloads | Yes | 3 | |
3093(i) | New | 28.7.2 [c.math.abs] | LWG 2294/2192 missed a std::abs overload | No | 3 | |
3172(i) | New | 28.7.3 [c.math.hypot3] | 3-arg std::hypot is underspecified compared to the 2-arg overload | Yes | 3 | |
3201(i) | C++20 | 28.7.4 [c.math.lerp] | lerp should be marked as noexcept | Yes | 2 | |
3066(i) | New | 28.7.6 [sf.cmath] | "report a domain error" in [sf.cmath]/1 is underspecified | No | 3 |
(view only non-Ready open issues)
Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates |
786(i) | Resolved | 29 [time] | Thread library timed waits, UTC and monotonic clocks | Yes | ||
1032(i) |