| Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates |
|---|
| 3105(i) | New | 16 [library] | T1 is convertible toT2 | No | 3 | |
| 2949(i) | New | 16 [library] | Unclear complexity requirements: space vs. time | No | 4 | |
| 3538(i) | New | 16.2 [library.c] | §[library.c] C library functions are not addressable | No | 2 | |
| 2136(i) | Open | 16.3.2 [structure] | Postconditions vs. exceptions | Yes | 3 | |
| 3556(i) | New | 16.3.2.3 [structure.requirements] | Specification of when semantic constraints are imposed by use of conceptsis unclear | No | 3 | |
| 3193(i) | New | 16.3.2.4 [structure.specifications] | Mandates: andExpects: elements are not defined for types | Yes | 3 | |
| 3401(i) | New | 16.3.2.4 [structure.specifications] | Is "as if by" equivalent to "equivalent to"? | No | 3 | |
| 3977(i) | New | 16.3.3.3.3 [bitmask.types] | constexpr andnoexcept for operators for bitmask types | Yes | 3 | |
| 3092(i) | Open | 16.3.3.3.3 [bitmask.types] | Unclear semantics ofenum class bitmask types | Yes | 3 | |
| 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 | |
| 4049(i) | New | 16.4.2 [organization] | C<foo.h> headers not in freestanding | Yes | 3 | |
| 3690(i) | New | 16.4.2.2 [contents] | std::make_from_tuple etc. should find all tuple-likestd::get overloads | Yes | 3 | |
| 3240(i) | New | 16.4.3.2 [using.headers] | Headers declare more than entities | No | 3 | |
| 3640(i) | New | 16.4.4 [utility.requirements] | Clarify which exceptions are propagated | Yes | 3 | |
| 4075(i) | SG1 | 16.4.4 [utility.requirements] | Thread stability requirement on constructors and destructors | No | 3 | |
| 2146(i) | Open | 16.4.4.2 [utility.arg.requirements] | Are reference typesCopyConstructible/MoveConstructible/CopyAssignable/MoveAssignable/Destructible? | No | 3 | |
| 2152(i) | LEWG | 16.4.4.3 [swappable.requirements] | Instances of standard container types are not swappable | Yes | 3 | |
| 4155(i) | New | 16.4.4.4 [nullablepointer.requirements] | Cpp17NullablePointer should require that some expression can be contextually converted to bool | Yes | 3 | |
| 4296(i) | New | 16.4.4.5 [hash.requirements] | Clarify that Cpp17Hash does not imply stateless | No | 3 | |
| 3044(i) | New | 16.4.4.6 [allocator.requirements] | Strange specification ofmax_size() for an allocator | Yes | 3 | |
| 3267(i) | New | 16.4.4.6 [allocator.requirements] | Rebound allocators andis_always_equal | Yes | 4 | |
| 3157(i) | New | 16.4.4.6 [allocator.requirements] | Allocatordestroy and fancy pointer operations must be non-throwing | Yes | 3 | |
| 2461(i) | New | 16.4.4.6 [allocator.requirements] | Interaction between allocators and container exception safety guarantees | No | 3 | |
| 4258(i) | New | 16.4.4.6.1 [allocator.requirements.general] | Size type mismatch in constraints involvingCpp17Allocator | No | 4 | |
| 4128(i) | New | 16.4.4.6.1 [allocator.requirements.general] | Allocator requirements should not allow rebinding conversions to be explicit | Yes | 3 | |
| 4065(i) | New | 16.4.4.6.1 [allocator.requirements.general] | Requirements for fancy pointers might be insufficient for self-referential implementation of containers | Yes | 3 | |
| 3682(i) | New | 16.4.4.6.1 [allocator.requirements.general] | ACpp17Allocator type can't silently ignore an unsupported alignment | No | 3 | |
| 4047(i) | New | 16.4.5.2.1 [namespace.std] | Explicitly specifying template arguments forstd::swap should not be supported | No | 4 | |
| 3926(i) | New | 16.4.5.2.1 [namespace.std] | Which namespacestd is the mentioned one? | Yes | 4 | |
| 3928(i) | New | 16.4.5.2.2 [namespace.posix] | Non-top-level namespaceposix shouldn't be reserved | Yes | 3 | |
| 3550(i) | New | 16.4.5.3 [reserved.names] | Names reserved by C for standard library not reserved by C++ | No | 3 | |
| 4033(i) | New | 16.4.5.3.3 [macro.names] | §[macro.names] defining macros after importing the standard library | Yes | 3 | |
| 3920(i) | New | 16.4.5.3.4 [extern.names] | Bad footnotes claiming external linkage for entities defined as macros | No | 3 | |
| 3142(i) | New | 16.4.5.8 [res.on.functions] | std::foo<incomplete> should be ill-formed NDR | Yes | 3 | |
| 3511(i) | New | 16.4.5.9 [res.on.arguments] | Clarify global permission to move | Yes | 3 | |
| 4068(i) | New | 16.4.5.11 [res.on.requirements] | Terminology for objects whose types model a concept | No | 3 | |
| 3429(i) | New | 16.4.5.11 [res.on.requirements] | "models" should subsume like "satisfies" | Yes | 3 | |
| 4100(i) | New | 16.4.6.4 [global.functions] | Default arguments and signatures of standard library non-member functions | Yes | 3 | |
| 4306(i) | New | 16.4.6.5 [member.functions] | Interaction between LWG 2259 andConstraints of member functions | No | 3 | |
| 2695(i) | New | 16.4.6.5 [member.functions] | "As if" unclear in [member.functions] | No | 3 | |
| 2414(i) | Open | 16.4.6.9 [reentrancy] | Member function reentrancy should be implementation-defined | Yes | 3 | |
| 4129(i) | New | 16.4.6.10 [res.on.data.races] | Possibly incorrect wording for data race avoidance | Yes | 3 | |
| 4145(i) | New | 16.4.6.10 [res.on.data.races] | Unclear how [res.on.data.races] apply to templated functions | No | 3 | |
| 4252(i) | New | 16.4.6.13 [derivation] | Are exposition-only classes considered specified for the purpose offinal? | Yes | 3 | |
| 3854(i) | New | 16.4.6.14 [res.on.exception.handling] | §[res.on.exception.handling]/3 should not be applied to all standard library types | No | 3 | |
| 3229(i) | New | 16.4.6.14 [res.on.exception.handling] | §[res.on.exception.handling]#3 cannot apply to types with implicitly declared destructors | Yes | 3 | |
| Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates |
|---|
| 4182(i) | New | 17.2.3 [support.types.nullptr] | Definition ofNULL is too broad | Yes | 3 | |
| 3217(i) | New | 17.3.1 [support.limits.general] | <memory> and<execution> should define__cpp_lib_parallel_algorithm | Yes | 3 | |
| 4411(i) | New | 17.3.2 [version.syn] | Even more feature-test macros for fully freestanding features are not marked freestanding | No | 2 | |
| 3931(i) | New | 17.3.2 [version.syn] | Too many paper bump__cpp_lib_ranges | Yes | 3 | |
| 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 | |
| 3922(i) | New | 17.3.5.1 [numeric.limits.general] | It's unclear whethernumeric_limits can be specialized by users | Yes | 3 | |
| 3923(i) | New | 17.3.5.1 [numeric.limits.general] | The specification ofnumeric_limits doesn't clearly distinguish between implementation requirementsand user requirements | Yes | 3 | |
| 3370(i) | New | 17.4.1 [cstdint.syn] | §[cstdint.syn]p2 and §[headers]p5 are not sufficiently clear | No | 3 | |
| 3084(i) | New | 17.5 [support.start.term] | Termination in C++ is unclear | No | 3 | |
| 2815(i) | New | 17.5 [support.start.term] | quick_exit can deadlock | Yes | 3 | |
| 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 | |
| 2303(i) | New | 17.6.3.4 [new.delete.placement] | Explicit instantiation ofstd::vector<UserType> broken? | No | 3 | |
| 2508(i) | New | 17.6.3.5 [new.delete.dataraces] | §[new.delete.dataraces] wording needs to be updated | No | 3 | |
| 4130(i) | Open | 17.6.5 [ptr.launder] | Preconditions forstd::launder might be overly strict | Yes | 3 | |
| 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 | |
| 4207(i) | New | 17.8.2.2 [support.srcloc.cons] | Point of reference forsource_location is not specified when used in an default template argument | Yes | 3 | |
| 4087(i) | SG16 | 17.9.3 [exception] | Standard exception messages have unspecified encoding | Yes | 3 | |
| 2453(i) | New | 17.11 [support.initlist] | §[iterator.range] and now [iterator.container] aren't available via<initializer_list> | No | 3 | |
| 2493(i) | New | 17.11 [support.initlist] | initializer_list supports incomplete classes | No | 4 | |
| 4051(i) | New | 17.12.2 [cmp.categories] | A less hacky and more useful way to compare comparison category types | Yes | 3 | |
| 3584(i) | New | 17.12.3 [cmp.common] | Clarify common comparison category conversions | Yes | 3 | |
| 3587(i) | New | 17.12.4 [cmp.concept] | std::three_way_comparable_with<T, U, void> can be satisfied but can't be modeled | No | 3 | |
| 3932(i) | New | 17.12.6 [cmp.alg] | Expression-equivalence is sometimes unimplementable when passing prvalue expressions to comparison CPOs | No | 3 | |
| 3491(i) | New | 17.12.6 [cmp.alg] | What is a "decayed type"? | No | 3 | |
| 3653(i) | New | 17.13.2 [coroutine.syn] | <coroutine> is freestanding, but usesstd::hash which is not | No | 3 | |
| 3945(i) | New | 17.14.2 [cstdarg.syn] | §[cstdarg.syn] 'Compatible types' are undefined | No | 3 | |
| 3954(i) | New | 17.15.1 [support.c.headers.general] | Feature-test macros in C headers (<stddef.h> etc.) | No | 3 | |
| 3883(i) | New | 17.15.7 [support.c.headers.other] | §[support.c.headers.other] Ambiguity in the requirements for includes | Yes | 4 | |
| 3799(i) | New | 17.15.7 [support.c.headers.other] | Should<math.h> provide 3-argument::hypot overloads? | No | 3 | |
| 3484(i) | New | 17.15.7 [support.c.headers.other] | Should<stddef.h> declare::nullptr_t? | Yes | 3 | |
| Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates |
|---|
| 4431(i) | New | 20.2.2 [memory.syn] | Parallelstd::ranges::destroy should allow exceptions | Yes | | |
| 4058(i) | LEWG | 20.2.4 [pointer.conversion] | std::to_address() should be SFINAE-friendly | Yes | 3 | |
| 4290(i) | New | 20.2.5 [ptr.align] | MissingMandates clauses onis_sufficiently_aligned | Yes | 2 | |
| 2421(i) | New | 20.2.5 [ptr.align] | Non-specification of handling zero size instd::align [ptr.align] | No | 3 | |
| 4283(i) | New | 20.2.6 [obj.lifetime] | std::trivially_relocate needs stronger preconditions on "nested" objects with dynamic lifetime | Yes | 2 | |
| 4168(i) | New | 20.2.6 [obj.lifetime] | std::start_lifetime_as inadvertently has undefined behavior due to use ofstd::bit_cast | Yes | 3 | |
| 4282(i) | New | 20.2.6 [obj.lifetime] | ImpreciseThrows: clause instd::relocate | Yes | 2 | |
| 3192(i) | New | 20.2.8.2 [allocator.uses.construction] | §[allocator.uses.construction] functions misbehave forconst types | Yes | 3 | |
| 3665(i) | New | 20.2.9.2 [allocator.traits.types] | Isstd::allocator_traits<Alloc>::rebind_alloc SFINAE-friendly? | No | 3 | |
| 3916(i) | New | 20.2.10 [default.allocator] | allocator,polymorphic_allocator, and containers should forbidcv-qualified types | No | 3 | |
| 3917(i) | New | 20.2.10 [default.allocator] | Validity ofallocator<void> and possiblypolymorphic_allocator<void> should be clarified | Yes | 3 | |
| 3684(i) | New | 20.2.10.2 [allocator.members] | std::allocator<T>::allocate_at_least in constant evaluation | Yes | 3 | |
| 3159(i) | New | 20.3.1.3 [unique.ptr.single] | §[unique.ptr.single] requirements on deleter may be too strict | No | 3 | |
| 2262(i) | Open | 20.3.1.3 [unique.ptr.single] | Requirement forunique_ptr<T>::get_deleter()(p) to be able to destroy theunique_ptr | Yes | 3 | |
| 4324(i) | New | 20.3.1.3.5 [unique.ptr.single.observers] | unique_ptr<void>::operator* is not SFINAE-friendly | Yes | 3 | |
| 3911(i) | New | 20.3.1.3.5 [unique.ptr.single.observers] | unique_ptr'soperator* is missing a mandate | Yes | 3 | |
| 2594(i) | New | 20.3.2.2 [util.smartptr.shared] | Contradicting definition of emptyshared_ptr onshared_ptr(nullptr, d) | Yes | 3 | |
| 4110(i) | New | 20.3.2.2.2 [util.smartptr.shared.const] | shared_ptr(nullptr_t, Deleter) is overconstrained, breaking some sensible deleters | Yes | 3 | |
| 4032(i) | New | 20.3.2.2.2 [util.smartptr.shared.const] | Possibly invalid types in the constraints of constructors ofstd::shared_ptr | Yes | 4 | |
| 2906(i) | New | 20.3.2.2.2 [util.smartptr.shared.const] | There is no ability to supply an allocator for the control block when constructing ashared_ptr from aunique_ptr | No | 3 | |
| 2751(i) | New | 20.3.2.2.3 [util.smartptr.shared.dest] | shared_ptr deleter not specified to observe expiredweak_ptr instances | No | 4 | |
| 4451(i) | New | 20.3.2.2.7 [util.smartptr.shared.create] | make_shared should not refer to a typeU[N] for runtime N | Yes | | |
| 3210(i) | New | 20.3.2.2.7 [util.smartptr.shared.create] | allocate_shared is inconsistent about removingconst from the pointerpassed to allocatorconstruct anddestroy | Yes | 3 | |
| 4322(i) | New | 20.4 [mem.composite.types] | ProblematicConstraints on incomplete types in indirect and polymorphic | Yes | 2 | |
| 4250(i) | LEWG | 20.4.1.7 [indirect.swap] | swap overloads forindirect andpolymorphic only found by ADL | Yes | 2 | |
| 4325(i) | New | 20.4.1.8 [indirect.relops] | std::indirect'soperator== still does not support incomplete types | Yes | 2 | |
| 3681(i) | New | 20.5.1 [mem.res.syn] | Further considerations on LWG 3679 (usingpmr::vector without including<memory_resource>) | No | 4 | |
| 3637(i) | New | 20.5.2 [mem.res.class] | pmr::memory_resource::do_allocate needs clarification | No | 3 | |
| 4311(i) | New | 20.5.3.3 [mem.poly.allocator.mem] | Canstd::pmr::polymorphic_allocator::construct just callstd::uninitialized_construct_using_allocator? | Yes | 3 | |
| 3634(i) | New | 20.5.4 [mem.res.global] | When are static-durationmemory_resource objects destroyed? | No | 3 | |
| 2848(i) | New | 20.5.5.2 [mem.res.pool.options] | Pass-through threshold for pool allocator | No | 3 | |
| Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates |
|---|
| 2290(i) | Open | 21 [meta] | Top-level "SFINAE"-based constraints should get a separate definition in Clause 17 | Yes | 3 | |
| 2452(i) | Core | 21 [meta] | is_constructible, etc. and default arguments | No | 3 | |
| 2845(i) | New | 21.3.2 [meta.rqmts] | enable_if,result_of,common_type andaligned_storage do not meet the definition ofTransformationTrait | No | 3 | |
| 3099(i) | Open | 21.3.3 [meta.type.synop] | is_assignable<Incomplete&, Incomplete&> | Yes | 2 | |
| 2939(i) | Open | 21.3.3 [meta.type.synop] | Some type-completeness constraints of traits are overspecified | Yes | 2 | |
| 4383(i) | New | 21.3.5 [const.wrap.class] | constant_wrapper's pseudo-mutators are underconstrained | Yes | 1 | |
| 3967(i) | New | 21.3.6.4 [meta.unary.prop] | The specification forstd::is_nothrow_* traits may be ambiguous in some cases involvingnoexcept(false) | Yes | 3 | |
| 3929(i) | New | 21.3.6.4 [meta.unary.prop] | Preconditions for type traits should beMandates | Yes | 3 | |
| 2827(i) | New | 21.3.6.4 [meta.unary.prop] | is_trivially_constructible and non-trivial destructors | No | 3 | |
| 3697(i) | New | 21.3.6.4 [meta.unary.prop] | Preconditions ofreference_constructs_from_temporary/reference_converts_from_temporary seem wrong | Yes | 3 | |
| 2496(i) | New | 21.3.6.4 [meta.unary.prop] | Certain hard-to-avoid errors not in the immediate context are not allowed to be triggered by the evaluation of type traits | No | 3 | |
| 2116(i) | Open | 21.3.6.4 [meta.unary.prop] | is_nothrow_constructible and destructors | No | 3 | |
| 2358(i) | Open | 21.3.6.4 [meta.unary.prop] | Apparently-bogus definition ofis_empty type trait | Yes | 3 | |
| 2077(i) | Open | 21.3.6.4 [meta.unary.prop] | Further incomplete constraints for type traits | No | 3 | |
| 3486(i) | LEWG | 21.3.6.4 [meta.unary.prop] | is_constructible<T[], T...> may be misleading in C++20 | No | 4 | |
| 4028(i) | New | 21.3.8 [meta.rel] | std::is_(nothrow_)convertible should be reworded to avoid dependence on thereturn statement | Yes | 2 | |
| 3400(i) | New | 21.3.8 [meta.rel] | Doesis_nothrow_convertible consider destruction of the destination type? | No | 3 | |
| 3174(i) | New | 21.3.8 [meta.rel] | Precondition onis_convertible is too strong | Yes | 3 | |
| 3205(i) | New | 21.3.9.7 [meta.trans.other] | decay_t in the newcommon_type fallback should beremove_cvref_t | Yes | 3 | |
| 4138(i) | New | 21.3.12 [meta.const.eval] | is_within_lifetime should mandateis_object | Yes | 3 | |
| 4435(i) | New | 21.4.6 [meta.reflection.names] | meta::has_identifier doesn't handle all types | Yes | 2 | |
| 4437(i) | New | 21.4.7 [meta.reflection.queries] | constant_of(^^v) for variablev of array type produces reflection of pointer constant | Yes | | |
| 4428(i) | New | 21.4.9 [meta.reflection.access.queries] | Metafunctions should not be defined in terms of constant subexpressions | Yes | | |
| 4434(i) | New | 21.4.9 [meta.reflection.access.queries] | meta::is_accessible does not need to consider incompleteD | Yes | | |
| 4298(i) | New | 21.4.12 [meta.reflection.extract] | §[meta.reflection.extract] Malformed "F noexcept" type | Yes | 3 | |
| Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates |
|---|
| 2153(i) | LEWG | 22.2.2 [utility.swap] | Narrowing of the non-memberswap contract | No | 2 | |
| 3902(i) | New | 22.2.6 [declval] | Return type ofstd::declval<cv void> should be (cv-unqualified)void | Yes | 4 | |
| 2599(i) | New | 22.2.6 [declval] | Library incomplete type permission phrase is unclear | No | 3 | |
| 3342(i) | New | 22.3.2 [pairs.pair] | Library wording uses "initializesx withy", which is underspecified | No | 3 | |
| 2289(i) | Open | 22.3.2 [pairs.pair] | constexpr guarantees of defaulted functions still insufficient | No | 3 | |
| 2766(i) | New | 22.3.3 [pairs.spec] | Swapping non-swappable types | Yes | 3 | |
| 3166(i) | New | 22.3.4 [pair.astuple] | No such descriptive element asValue: | No | 3 | |
| 3378(i) | New | 22.4.2 [tuple.syn] | tuple_size_v/tuple_element_t should be available whentuple_size/tuple_element are | Yes | 3 | |
| 4267(i) | New | 22.4.4.2 [tuple.cnstr] | Uses-allocator construction is meaningless for tuple of references | Yes | 3 | |
| 4313(i) | New | 22.4.4.2 [tuple.cnstr] | Uses-allocator construction ofpair intuple'sallocator_arg_t constructors | Yes | 3 | |
| 3583(i) | New | 22.4.4.2 [tuple.cnstr] | Clarify if/when short circuiting applies to conditions inConstraints: elements | No | 3 | |
| 2528(i) | New | 22.4.4.2 [tuple.cnstr] | Order ofstd::tuple construction unspecified | No | 3 | |
| 4040(i) | New | 22.4.7 [tuple.helper] | Contradictory specification ofstd::tuple_size | No | 3 | |
| 3882(i) | New | 22.4.9 [tuple.rel] | tuple relational operators have confused friendships | Yes | 3 | |
| 3728(i) | New | 22.4.9 [tuple.rel] | Can't make neither head nor tail of the description ofoperator<=>(tuple, tuple) | Yes | 4 | |
| 2472(i) | New | 22.4.9 [tuple.rel] | Heterogeneous comparisons in the standard library can result in ambiguities | No | 3 | |
| 2990(i) | Open | 22.5.3 [optional.optional] | optional::value_type is not always a value type | Yes | 3 | |
| 2811(i) | New | 22.5.3.2 [optional.ctor] | "Selected constructor" wording is incorrect foroptional/variant/any | Yes | 3 | |
| 2746(i) | New | 22.5.3.4 [optional.assign] | Inconsistency between requirements foremplace betweenoptional andvariant | Yes | 3 | |
| 4281(i) | New | 22.5.3.7 [optional.observe] | Inconsistency betweenvalue_or() anderror_or() instd::expected | No | 3 | |
| 4406(i) | New | 22.5.3.7 [optional.observe] | optional::value_or return statement is inconsistent withMandates | Yes | 3 | |
| 3424(i) | New | 22.5.3.7 [optional.observe] | optional::value_or should never return acv-qualified type | Yes | 3 | |
| 2829(i) | Open | 22.5.3.7 [optional.observe] | LWG 2740 leaves behind vacuous words | No | 2 | |
| 4439(i) | New | 22.5.4.4 [optional.ref.swap] | std::optional<T&>::swap possibly selects ADL-foundswap | Yes | | |
| 4308(i) | New | 22.5.4.5 [optional.ref.iterators] | std::optional<T&>::iterator can't be a contiguous iterator for someT | Yes | 1 | |
| 4367(i) | New | 22.5.4.7 [optional.ref.monadic] | Improveoptional<T&>::or_else | Yes | 4 | |
| 3613(i) | New | 22.5.5 [optional.nullopt] | Specify thatnullopt_t is copyable | Yes | 3 | |
| 2881(i) | New | 22.6.3 [variant.variant] | Adopt section III of P0308R0 | No | 3 | |
| 3215(i) | New | 22.6.3.2 [variant.ctor] | variant default constructor has vagueconstexpr requirements | No | 2 | |
| 2833(i) | Open | 22.6.3.2 [variant.ctor] | Library needs to specify what it means when it declares a functionconstexpr | Yes | 2 | |
| 3991(i) | New | 22.6.3.4 [variant.assign] | variant's move assignment should not be guaranteed to produce a valueless by exception state | Yes | 3 | |
| 3069(i) | New | 22.6.3.4 [variant.assign] | Move assigningvariant's subobject corrupts data | Yes | 3 | |
| 4197(i) | New | 22.6.7 [variant.visit] | Complexity ofstd::visit with immediate functions | Yes | 2 | |
| 3416(i) | New | 22.7.4 [any.class] | TheThrows: specification ofstd::any does not mention allocation | No | 3 | |
| 3423(i) | New | 22.7.5 [any.nonmembers] | std::any_cast should never return acv-qualified type | Yes | 3 | |
| 3688(i) | New | 22.8.4 [expected.bad] | Exception specifications of copy/move member functions ofstd::bad_expected_access | No | 2 | |
| 3891(i) | New | 22.8.6.1 [expected.object.general] | LWG 3870 breaksstd::expected<cv T, E> | Yes | 2 | |
| 4195(i) | New | 22.8.6.4 [expected.object.assign] | expected<int, int> isn't specified to be trivially assignable | Yes | 2 | |
| 4026(i) | New | 22.8.6.4 [expected.object.assign] | Assignment operators ofstd::expected should propagate triviality | Yes | 2 | |
| 4187(i) | New | 22.9.2 [template.bitset] | bitset::reference should be const-assignable | Yes | 3 | |
| 2348(i) | Open | 22.9.2 [template.bitset] | charT('1') is not the wide equivalent of'1' | Yes | 3 | |
| 3805(i) | New | 22.10 [function.objects] | Expression evaluating to a call wrapper is a prvalue, not an object | No | 4 | |
| 4268(i) | New | 22.10.4 [func.require] | function<void()> suppressesnodiscard warnings | No | 3 | |
| 4319(i) | New | 22.10.4 [func.require] | Supporting copy-elision in function wrappers | Yes | 3 | |
| 4007(i) | New | 22.10.4 [func.require] | Mystic prohibition of calling avolatile-qualified perfect forwarding call wrapper | Yes | 3 | |
| 3046(i) | New | 22.10.6 [refwrap] | Do not requirereference_wrapper to support non-referenceable function types | 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 | |
| 3979(i) | New | 22.10.13 [func.not.fn] | Should we rejectstd::bind_front<42>() and its friends? | Yes | 4 | |
| 4264(i) | New | 22.10.17.1 [func.wrap.general] | Skipping indirection is not allowed forfunction_ref | Yes | 2 | |
| 3493(i) | New | 22.10.17.3.2 [func.wrap.func.con] | The constructor ofstd::function taking anF is missing a constraint | Yes | 3 | |
| 3680(i) | New | 22.10.17.4.3 [func.wrap.move.ctor] | Constructor ofmove_only_function with emptyref-qualifier is over-constrained | Yes | 2 | |
| 3642(i) | New | 22.10.17.4.3 [func.wrap.move.ctor] | move_only_function assignment operators seem to be defined suboptimal | Yes | 3 | |
| 4373(i) | New | 22.10.17.6.2 [func.wrap.ref.class] | function_ref should provideresult_type | Yes | 3 | |
| 4127(i) | New | 22.10.18.3 [func.search.bm] | The Standard Library should not use predicates of the formpred(*i) != false | Yes | 3 | |
| 4365(i) | LEWG | 22.10.18.3 [func.search.bm] | boyer_moore_searcher andboyer_moore_horspool_searcher should beconstexpr-friendly | Yes | 4 | |
| 3512(i) | New | 22.10.19 [unord.hash] | Incorrect exception safety guarantee for unordered containers | No | 3 | |
| 3968(i) | New | 22.11.8 [bit.endian] | std::endian::native value should be more specific about object representations | Yes | 4 | |
| Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates |
|---|
| 4173(i) | New | 23 [containers] | Better term for "references, pointers and iterators to elements" | No | 4 | |
| 4176(i) | New | 23 [containers] | Refer back to container requirements when extending them | No | 4 | |
| 2884(i) | LEWG | 23 [containers] | Relational operators for containers should sfinae; if the underlying type is not comparable, neither should the container be | No | 4 | |
| 2307(i) | LEWG | 23 [containers] | Should the Standard Library useexplicit only when necessary? | No | 2 | |
| 3059(i) | New | 23.2 [container.requirements] | Wrong requirements for map-like associative container assignment? | No | 3 | |
| 2269(i) | New | 23.2.2 [container.requirements.general] | Container iterators and argument-dependent lookup | No | 4 | |
| 2321(i) | Open | 23.2.2 [container.requirements.general] | Moving containers should (usually) be required to preserve iterators | Yes | 3 | |
| 1521(i) | Open | 23.2.2 [container.requirements.general] | Requirements on internal pointer representations in containers | Yes | 3 | |
| 3976(i) | New | 23.2.2.5 [container.alloc.reqmts] | What does it mean for a type to be "allocator aware"? | No | 4 | |
| 3297(i) | New | 23.2.4 [sequence.reqmts] | Useless sequence container requirement | Yes | 3 | |
| 2705(i) | New | 23.2.4 [sequence.reqmts] | Questionable precondition on Sequence containersa.assign(n, t) | Yes | 3 | |
| 2206(i) | Open | 23.2.4 [sequence.reqmts] | Inaccuracy ininitializer_list constructor requirements | Yes | 3 | |
| 4159(i) | New | 23.2.5 [container.node] | Uses-allocator construction mechanisms should be opted out for node handles | Yes | 3 | |
| 3438(i) | New | 23.2.5.1 [container.node.overview] | §[container.node.overview] missingmultiset/map cases | No | 3 | |
| 3227(i) | New | 23.2.7 [associative.reqmts] | Ambiguity issue forextract in ordered and unordered associative containers | Yes | 3 | |
| 2362(i) | New | 23.2.7 [associative.reqmts] | unique, associativeemplace() should not move/copy themapped_type constructor arguments when no insertion happens | No | 3 | |
| 2844(i) | Open | 23.2.7 [associative.reqmts] | Stability ofa_uniq.insert(i, j) | No | 3 | |
| 2227(i) | Open | 23.2.7 [associative.reqmts] | Stateful comparison objects in associative containers | No | 3 | |
| 2215(i) | Open | 23.2.7 [associative.reqmts] | (unordered) associative container functors should beCopyConstructible | Yes | 3 | |
| 4132(i) | New | 23.2.7.1 [associative.reqmts.general] | Throws specifications need to includeboolean-testable operations | Yes | 3 | |
| 3577(i) | New | 23.2.7.1 [associative.reqmts.general] | Merging an (unordered) associative container with itself | No | 3 | |
| 3691(i) | New | 23.2.7.1 [associative.reqmts.general] | Replacement of keys in associative containers | Yes | 3 | |
| 4046(i) | New | 23.2.7.2 [associative.reqmts.except] | Effects of inserting into or erasing from flat container adaptors when an exception is thrown need to be more permissive | No | 2 | |
| 1175(i) | Open | 23.2.8 [unord.req] | unordered complexity | Yes | 3 | |
| 2198(i) | Open | 23.2.8 [unord.req] | max_load_factor(z) makes no strong guarantees, but bans useful behavior | Yes | 3 | |
| 2189(i) | Open | 23.2.8.2 [unord.req.except] | Throwingswap breaks unordered containers' state | No | 3 | |
| 617(i) | Open | 23.3.3 [array] | std::array is a sequence that doesn't satisfy the sequence requirements? | No | 3 | |
| 3219(i) | New | 23.3.3.1 [array.overview] | std::array overview container requirements are incorrect | Yes | 3 | |
| 2823(i) | Open | 23.3.3.1 [array.overview] | std::array initialization is still not permissive enough | Yes | 3 | |
| 3488(i) | Open | 23.3.3.4 [array.special] | Isarray<const int, 0> swappable or not? | Yes | 3 | |
| 2157(i) | Open | 23.3.3.5 [array.zero] | How doesstd::array<T,0> initialization work whenT is not default-constructible? | Yes | 3 | |
| 4225(i) | New | 23.3.5.3 [deque.capacity] | What should happen when an exception is thrown on resizingstd::deque,std::forward_list, orstd::list? | Yes | 3 | |
| 4123(i) | New | 23.3.5.4 [deque.modifiers] | Container effects use "the assignment operator or move assignment operator" | Yes | 3 | |
| 3308(i) | New | 23.3.5.4 [deque.modifiers] | vector anddeque iteratorerase invalidates elements even when no change occurs | Yes | 3 | |
| 4320(i) | New | 23.3.9 [hive] | hive operations involving insertion/erasure should have𝒪(log n) time complexity | Yes | | |
| 4379(i) | New | 23.3.9.3 [hive.capacity] | hive::reserve() needsThrows: element adjusted to match block min/max considerations | Yes | 3 | |
| 4380(i) | New | 23.3.9.3 [hive.capacity] | hive::reserve() complexity does not reflect potential deallocation of blocks | Yes | 3 | |
| 4323(i) | New | 23.3.9.5 [hive.operations] | hive::unique time complexity should incorporate potential block removal complexity | Yes | 3 | |
| 3758(i) | New | 23.3.13.3 [vector.capacity] | Element-relocating operations ofstd::vector andstd::deque should conditionally requireCpp17CopyInsertable in their preconditions | No | 3 | |
| 2158(i) | Open | 23.3.13.3 [vector.capacity] | Conditional copy/move instd::vector | Yes | 3 | |
| 1102(i) | Open | 23.3.13.3 [vector.capacity] | std::vector's reallocation policy still unclear | Yes | 3 | |
| 4219(i) | Tentatively NAD | 23.3.13.6 [vector.erasure] | std::vector::erase[_if] should be based on rangesremove | Yes | | |
| 3638(i) | New | 23.3.14 [vector.bool] | vector<bool>::swap(reference, reference) is useless | Yes | 3 | |
| 1422(i) | Open | 23.3.14 [vector.bool] | vector<bool> iterators are not random access | No | 3 | |
| 4228(i) | Tentatively NAD | 23.3.14.1 [vector.bool.pspc] | Doesvector<bool, Allocator> mandate thatAllocator::value_type isbool? | No | | |
| 4122(i) | New | 23.3.16.1 [inplace.vector.overview] | Ill-formedoperator<=> can cause hard error when instantiatingstd::inplace_vector | Yes | 2 | |
| 4151(i) | New | 23.3.16.5 [inplace.vector.modifiers] | Precondition ofinplace_vector::swap | Yes | 2 | |
| 4223(i) | New | 23.4.1 [associative.general] | Deduction guides for maps are mishandling tuples and references | Yes | 2 | |
| 3531(i) | New | 23.4.3.1 [map.overview] | LWG 3025 broke previous valid code | Yes | 3 | |
| 2713(i) | New | 23.5 [unord] | More missing allocator-extended constructors for unordered containers | Yes | 3 | |
| 4371(i) | Tentatively NAD | 23.6.3.1 [queue.defn] | Container adaptor'sempty/size should benoexcept | Yes | | |
| 3189(i) | New | 23.6.4 [priority.queue] | Missing requirement forstd::priority_queue | No | 3 | |
| 3161(i) | Open | 23.6.6 [stack] | Container adapters mandate use ofemplace_back but don't require it | Yes | 3 | |
| 3959(i) | New | 23.6.8 [flat.map] | Should the comparator ofstd::flat_map/std::flat_multimap be copied twice in some operations? | No | 3 | |
| 3802(i) | New | 23.6.8 [flat.map] | flat_foo allocator-extended constructors lack move semantics | No | 2 | |
| 3804(i) | New | 23.6.8 [flat.map] | flat_foo missing some allocator-extended deduction guides | No | 2 | |
| 4350(i) | LEWG | 23.6.8 [flat.map] | Should flat adaptors useinsert_range when available? | No | 2 | |
| 3966(i) | New | 23.6.8.1 [flat.map.overview] | Thevalue_type andreference members ofstd::flat_(multi)map::(const_)iterator are unclear | No | 3 | |
| 3963(i) | New | 23.6.8.2 [flat.map.defn] | Differentstd::flat_map/std::flat_multimap specializations should be able to share same nested classes | Yes | 3 | |
| 4374(i) | New | 23.6.8.7 [flat.map.modifiers] | flat_meow range insertion behavior is unclear if in-place merge cannot allocate additional memory | No | 3 | |
| 4000(i) | New | 23.6.8.7 [flat.map.modifiers] | flat_map::insert_range'sEffects is not quite right | Yes | 3 | |
| 4352(i) | New | 23.6.9.1 [flat.multimap.overview] | "operations on flat_multimap are equivalent to those of flat_map" | No | 3 | |
| 4048(i) | New | 23.6.11 [flat.set] | Inconsistent preconditions for transparent insertion ofstd::flat_map/std::flat_set | Yes | 2 | |
| 4180(i) | New | 23.6.12.5 [flat.multiset.modifiers] | Inconsistent constraints onflat_foo::emplace | Yes | 3 | |
| 3813(i) | New | 23.7.2.2.1 [span.overview] | std::span<volatile T, E> is made ill-formed by P2278R4 whenT is a normal class type | Yes | 2 | |
| 4397(i) | New | 23.7.2.2.2 [span.cons] | Improvespan(R&& r) | Yes | 3 | |
| 4404(i) | Tentatively NAD | 23.7.2.2.3 [span.deduct] | Shouldspan(R&&) CTAD apply P2280? | Yes | | |
| 3995(i) | New | 23.7.3 [views.multidim] | Issue with custom index conversion in<mdspan> | No | 3 | |
| 4314(i) | New | 23.7.3.4 [mdspan.layout] | Missing move inmdspan layoutmapping::operator() | Yes | 2 | |
| 4021(i) | New | 23.7.3.6.1 [mdspan.mdspan.overview] | mdspan::is_always_meow() should benoexcept | Yes | 3 | |
| 4405(i) | New | 23.7.3.6.2 [mdspan.mdspan.cons] | mdspan constructor should disallow derived to base conversions | Yes | 3 | |
| Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates |
|---|
| 3952(i) | New | 24.2 [iterator.synopsis] | iter_common_reference_t does not conform to the definition ofindirectly_readable | Yes | 3 | |
| 1213(i) | Open | 24.3 [iterator.requirements] | Meaning of valid and singular iterator underspecified | No | 4 | |
| 4271(i) | Tentatively NAD | 24.3.1 [iterator.requirements.general] | Caching range views claim amortized amortized 𝒪(1) runtimecomplexity for algorithms that are in fact 𝒪(n) | Yes | | |
| 4080(i) | New | 24.3.2 [iterator.assoc.types] | Presumed value and difference types of an iterator type in ranges and non-ranges algorithms | No | 3 | |
| 3838(i) | New | 24.3.2.1 [incrementable.traits] | The last specialization ofincrementable_traits is under-constrained | Yes | 3 | |
| 3615(i) | New | 24.3.2.1 [incrementable.traits] | The last specialization ofincrementable_traits has wrong operand types | Yes | 3 | |
| 3287(i) | New | 24.3.2.3 [iterator.traits] | Exposition-onlycpp17-input-iterator concept is needlessly complex | Yes | 3 | |
| 3890(i) | New | 24.3.4.4 [iterator.concept.winc] | ABI issue for integer-class types | Yes | 3 | |
| 3716(i) | New | 24.3.4.11 [iterator.concept.forward] | §[iterator.concept.forward][forward.iterators] Two different definitions of multi-pass guarantee | No | 3 | |
| 2962(i) | Open | 24.3.5.3 [input.iterators] | Iterators of Containers of move-only types do not modelInputIterator | Yes | 2 | |
| 484(i) | Open | 24.3.5.3 [input.iterators] | Convertible toT | No | 3 | |
| 2035(i) | Open | 24.3.5.4 [output.iterators] | Output iterator requirements are broken | Yes | 3 | |
| 2038(i) | Open | 24.3.5.4 [output.iterators] | Missing definition forincrementable iterator | No | 3 | |
| 4171(i) | Tentatively NAD | 24.3.6.3 [indirectcallable.indirectinvocable] | P2609R3 breaks code that usesviews::zip andget<T> | No | | |
| 4270(i) | New | 24.3.6.4 [projected] | Diagnose misuse ofstd::projected::operator* | Yes | 3 | |
| 3439(i) | New | 24.4.3 [iterator.operations] | "Distance" template parameter is underspecified | No | 3 | |
| 3197(i) | New | 24.4.3 [iterator.operations] | std::prev should not requireBidirectionalIterator | Yes | 3 | |
| 4055(i) | New | 24.4.3 [iterator.operations] | §[iterator.operations]std::distance is missing a precondition | Yes | 4 | |
| 3344(i) | New | 24.4.3 [iterator.operations] | advance(i,most-negative) andprev(i,most-negative) | Yes | 3 | |
| 2931(i) | Open | 24.4.3 [iterator.operations] | Missed optimization opportunity with single-argumentstd::next | No | 3 | |
| 4303(i) | New | 24.4.4.3 [range.iter.op.distance] | std::decay_t in the specification ofranges::distance is problematic | Yes | 4 | |
| 2858(i) | New | 24.5.1 [reverse.iterators] | LWG 2472: actually an incompatibility with C++03 | Yes | 4 | |
| 3623(i) | New | 24.5.1.1 [reverse.iterators.general] | Uses ofstd::reverse_iterator with containers should not require manually including<iterator> | Yes | 3 | |
| 2595(i) | New | 24.5.1.2 [reverse.iterator] | reverse_iterator::operator[]'s return type revisited | Yes | 3 | |
| 3602(i) | New | 24.5.1.4 [reverse.iter.cons] | reverse_iterator's converting assignment is overconstrained | Yes | 3 | |
| 3725(i) | New | 24.5.1.6 [reverse.iter.elem] | reverse_iterator::operator-> should not useprev for non-pointer iterators | Yes | 3 | |
| 4104(i) | New | 24.5.3 [const.iterators] | basic_const_iterator<volatile int*> is not acontiguous_iterator | No | 4 | |
| 3986(i) | New | 24.5.3 [const.iterators] | basic_const_iterator doesn't work withoptional | No | 3 | |
| 3988(i) | Open | 24.5.3 [const.iterators] | Shouldas_const_view andbasic_const_iterator providebase()? | Yes | 3 | |
| 3863(i) | New | 24.5.3.2 [const.iterators.alias] | Isinput_iterator guaranteed to haveiter_const_reference_t? | No | 2 | |
| 4237(i) | New | 24.5.3.3 [const.iterators.iterator] | The standard library iterator adaptor does not handleiterator_category correctly | No | 3 | |
| 4218(i) | New | 24.5.3.5 [const.iterators.ops] | Constraint recursion inbasic_const_iterator's relational operators due to ADL + CWG 2369 | Yes | 2 | |
| 4125(i) | New | 24.5.4.2 [move.iterator] | move_iterator's default constructor should be constrained | Yes | 3 | |
| 4120(i) | New | 24.5.4.2 [move.iterator] | move_iterator should provideiterator_category only when it modelsforward_iterator | Yes | 3 | |
| 4115(i) | New | 24.5.4.6 [move.iter.elem] | move_iterator::operator* should have conditionalnoexcept specification | Yes | 4 | |
| 4092(i) | New | 24.5.5.1 [common.iterator] | The monotonic version ofcommon_iterator::operator== is underconstrained | Yes | 3 | |
| 3783(i) | New | 24.5.5.1 [common.iterator] | views::common may not be a range adaptor object | Yes | 3 | |
| 3748(i) | New | 24.5.5.6 [common.iter.cmp] | common_iterator andcounted_iterator'operator- are missing cast to return type | Yes | 3 | |
| 2366(i) | New | 24.6.4 [istreambuf.iterator] | istreambuf_iterator end-of-stream equality | Yes | 3 | |
| 3107(i) | New | 24.6.4 [istreambuf.iterator] | istreambuf_iterator has publicexposition-only member | Yes | 4 | |
| 3188(i) | New | 24.6.4 [istreambuf.iterator] | istreambuf_iterator::pointer should not beunspecified | Yes | 3 | |
| 3108(i) | New | 24.6.4.2 [istreambuf.iterator.proxy] | istreambuf_iterator::proxy::operator* should beconst | Yes | 3 | |
| 3537(i) | New | 24.7 [iterator.range] | §[iterator.range] Missingnoexcept forstd::rbegin/rend for arrays andinitializer_list | No | 3 | |
| 4385(i) | New | 24.7 [iterator.range] | Including<simd> doesn't providestd::begin/end | Yes | 3 | |
| 4181(i) | New | 24.7 [iterator.range] | Some ranges have negativessize | No | 3 | |
| 4131(i) | New | 24.7 [iterator.range] | Including<optional> doesn't providestd::begin/end | Yes | 3 | |
| 4387(i) | Open | 24.7 [iterator.range] | Including<stacktrace> doesn't providestd::begin/end | Yes | 3 | |
| Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates |
|---|
| 4307(i) | New | 25.2 [ranges.syn] | Make good use ofsized-random-access-range andbidirectional-commonin<ranges> | Yes | 4 | |
| 3729(i) | New | 25.2 [ranges.syn] | std::tuple_element_t<std::ranges::subrange<I, S, K>> should remove top-levelcv-qualifiers | Yes | 4 | |
| 4184(i) | Tentatively NAD | 25.3 [range.access] | Domain ofranges::cmeow doesn't matchranges::meow | No | | |
| 4062(i) | New | 25.3.13 [range.prim.empty] | ranges::empty has no semantic requirements forforward_ranges | No | 3 | |
| 4389(i) | SG9 | 25.4.2 [range.range] | ranges::for_each possibly behaves differently from range-basedfor | Yes | 2 | |
| 3982(i) | Tentatively NAD | 25.4.5 [range.view] | is-derived-from-view-interface should require thatT is derived fromview_interface<T> | Yes | | |
| 3896(i) | New | 25.4.6 [range.refinements] | The definition ofviewable_range is not quite right | Yes | 4 | |
| 4003(i) | Tentatively NAD | 25.5.3 [view.interface] | view_interface::back is overconstrained | Yes | | |
| 4183(i) | New | 25.5.4.1 [range.subrange.general] | subrange should providedata() | Yes | 4 | |
| 4010(i) | New | 25.5.4.3 [range.subrange.access] | subrange::advance should be improved | Yes | 3 | |
| 4121(i) | New | 25.5.7.1 [range.utility.conv.general] | ranges::to constructs associative containers viac.emplace(c.end(), *it) | Yes | 2 | |
| 4229(i) | Tentatively NAD | 25.5.7.2 [range.utility.conv.to] | std::ranges::to with union return type | Yes | | |
| 3958(i) | Tentatively NAD | 25.5.7.2 [range.utility.conv.to] | ranges::to should prioritize the "reserve" branch | Yes | | |
| 4066(i) | New | 25.5.7.2 [range.utility.conv.to] | ranges::to should reserve whensized_sentinel_for is satisfied | Yes | 4 | |
| 4381(i) | New | 25.5.7.2 [range.utility.conv.to] | std::ranges::to specification using CTAD not supported by core language | Yes | 2 | |
| 3722(i) | New | 25.5.7.2 [range.utility.conv.to] | ranges::toreserves the wrong size | Yes | 4 | |
| 4008(i) | New | 25.5.7.2 [range.utility.conv.to] | §[range.utility.conv.to]ranges::to may cause infinite recursion ifrange_value_t<C> is a non-move-constructible range | Yes | 3 | |
| 4018(i) | New | 25.5.7.2 [range.utility.conv.to] | ranges::to's copy branch is underconstrained | Yes | 3 | |
| 3845(i) | New | 25.5.7.2 [range.utility.conv.to] | ranges::to'sfrom_range_t tag branch has the wrong constraint | Yes | 4 | |
| 3985(i) | New | 25.5.7.2 [range.utility.conv.to] | ranges::to shouldMandatesC not to be view | Yes | 3 | |
| 3983(i) | New | 25.5.7.3 [range.utility.conv.adaptors] | ranges::to adaptors are underconstrained | Yes | 3 | |
| 3907(i) | New | 25.6 [range.factories] | Can iterator types of range adaptors and range factories be SCARY? | No | 3 | |
| 4417(i) | New | 25.6.4.1 [range.iota.overview] | views::indices is underconstrained | Yes | | |
| 3614(i) | New | 25.6.4.2 [range.iota.view] | iota_view::size and the most negative signed integer values | Yes | 3 | |
| 4002(i) | New | 25.6.4.3 [range.iota.iterator] | The definition ofiota_view::iterator::iterator_concept should be improved | Yes | 3 | |
| 3846(i) | New | 25.6.4.3 [range.iota.iterator] | iota_view::iterator::operator- is overconstrained | Yes | 3 | |
| 3609(i) | New | 25.6.4.4 [range.iota.sentinel] | std::ranges::iota_view<int, long> has non-subtractableiterator andsentinel types | Yes | 3 | |
| 3955(i) | New | 25.6.5.2 [range.repeat.view] | Addnoexcept to severalrepeat_view[::iterator] member functions | Yes | 3 | |
| 3763(i) | New | 25.6.5.3 [range.repeat.iterator] | Should range adaptor iterators only provideiterator_category when itsdifference_type is not an integer-class type? | Yes | 3 | |
| 3679(i) | LEWG | 25.6.6 [range.istream] | Is<ranges> sufficient foristream_view? | No | 3 | |
| 3489(i) | New | 25.6.6.3 [range.istream.iterator] | Improveistream_view wording | Yes | 3 | |
| 3981(i) | Tentatively NAD | 25.7.2 [range.adaptor.object] | Range adaptor closure object is underspecified for its return type | Yes | | |
| 3994(i) | New | 25.7.2 [range.adaptor.object] | adaptor(args...)(r) is not equivalent tostd::bind_back(adaptor, args...)(r) | No | 4 | |
| 4099(i) | New | 25.7.7.1 [range.as.rvalue.overview] | The simple case ofviews::as_rvalue andviews::common are not strictly correct | Yes | 4 | |
| 3829(i) | New | 25.7.7.2 [range.as.rvalue.view] | as_rvalue_view::end should improve non-common case | Yes | 3 | |
| 4050(i) | Tentatively NAD | 25.7.10.1 [range.take.overview] | Shouldviews::iota(0) | views::take(5) beviews::iota(0, 5)? | Yes | | |
| 4214(i) | New | 25.7.10.1 [range.take.overview] | MissingPreconditions fortake/drop adaptor | Yes | 3 | |
| 4009(i) | Tentatively NAD | 25.7.12.2 [range.drop.view] | drop_view::begin const may have 𝒪(n) complexity | Yes | 3 | |
| 3730(i) | New | 25.7.12.2 [range.drop.view] | std::ranges::drop_view may have different size type from its underlying view | Yes | 3 | |
| 3666(i) | New | 25.7.14 [range.join] | join_view's difference type is too small | No | 2 | |
| 4220(i) | New | 25.7.14.2 [range.join.view] | join_view incorrectly stores inner range | Yes | 3 | |
| 4401(i) | LEWG | 25.7.14.2 [range.join.view] | join_view should besized_range when applied to ranges ofsimd::vec | Yes | 3 | |
| 3873(i) | New | 25.7.15.2 [range.join.with.view] | join_with_view'sconst begin is underconstrained | No | 3 | |
| 4059(i) | New | 25.7.15.3 [range.join.with.iterator] | Leaky abstraction injoin_with_view's iterator | Yes | 3 | |
| 3852(i) | New | 25.7.15.3 [range.join.with.iterator] | join_with_view::iterator'siter_move anditer_swap should be conditionallynoexcept | Yes | 3 | |
| 3972(i) | New | 25.7.15.3 [range.join.with.iterator] | Issues withjoin_with_view::iterator'siter_swap | No | 2 | |
| 3855(i) | New | 25.7.16.2 [range.lazy.split.view] | tiny-range is not quite right | Yes | 4 | |
| 3685(i) | New | 25.7.16.2 [range.lazy.split.view] | Inlazy_split_view, CTAD doesn't work when given aninput_range input and atiny-range pattern | Yes | 3 | |
| 3599(i) | New | 25.7.16.2 [range.lazy.split.view] | Theconst overload oflazy_split_view::begin should be constrained byconst Pattern | Yes | 3 | |
| 4108(i) | SG9 | 25.7.16.2 [range.lazy.split.view] | lazy_split_view should besized_range when pattern is emptytiny-range | Yes | 4 | |
| 4249(i) | New | 25.7.16.3 [range.lazy.split.outer] | The past end issue forlazy_split_view | Yes | 2 | |
| 3686(i) | New | 25.7.16.3 [range.lazy.split.outer] | Inlazy_split_view, comparing a default-constructedouter-iterator orinner-iterator withstd::default_sentinel results in null pointer dereference | Yes | 3 | |
| 4017(i) | New | 25.7.17.3 [range.split.iterator] | Behavior ofstd::views::split on an empty range | Yes | 3 | |
| 4073(i) | New | 25.7.18.2 [range.concat.view] | concat_view::size may overflow | No | 4 | |
| 4091(i) | New | 25.7.18.2 [range.concat.view] | concat_view rejects non-movable references | Yes | 4 | |
| 4081(i) | New | 25.7.18.3 [range.concat.iterator] | concat_view::iterator::operator- is overconstrained | Yes | 3 | |
| 4089(i) | New | 25.7.18.3 [range.concat.iterator] | concat_view::iterator'siter_swap is overconstrained | Yes | 3 | |
| 4019(i) | SG9 | 25.7.21 [range.reverse] | Reversing an infinite range leads to an infinite loop | No | 3 | |
| 4097(i) | LEWG | 25.7.21.1 [range.reverse.overview] | views::reverse should be specialized for some view types | Yes | 3 | |
| 3830(i) | New | 25.7.21.2 [range.reverse.view] | reverse_view should not cache whenranges::next has constant time complexity | Yes | 3 | |
| 3797(i) | New | 25.7.23.2 [range.elements.view] | elements_view insufficiently constrained | Yes | 2 | |
| 4114(i) | New | 25.7.23.3 [range.elements.iterator] | elements_view::iterator::operator* missing conditionalnoexcept specification | Yes | 3 | |
| 3832(i) | New | 25.7.23.3 [range.elements.iterator] | Missing change forelement_view::iterator in LWG 3798 | Yes | 3 | |
| 3908(i) | Tentatively NAD | 25.7.24.3 [range.enumerate.iterator] | enumerate_view::iterator constructor is explicit | Yes | | |
| 4116(i) | New | 25.7.24.3 [range.enumerate.iterator] | enumerate_view::iterator andcartesian_product_view::iterator should not always provideiterator_category | Yes | 3 | |
| 3864(i) | New | 25.7.25 [range.zip] | zip over range of reference to an abstract type | No | 4 | |
| 3731(i) | New | 25.7.25.2 [range.zip.view] | zip_view andadjacent_view are underconstrained | Yes | 3 | |
| 4006(i) | Tentatively NAD | 25.7.29.4 [range.chunk.outer.value] | chunk_view::outer-iterator::value_type should provideempty | Yes | | |
| 4254(i) | New | 25.7.32.3 [range.stride.iterator] | stride_view::iterator should provideoperator-> | Yes | 3 | |
| 3777(i) | Open | 25.7.33.2 [range.cartesian.view] | Commoncartesian_product_view produces an invalid range if the first range is input and one of the ranges is empty | Yes | 2 | |
| 4210(i) | New | 25.7.34.3 [range.cache.latest.iterator] | Issue withcache_latest_view::iterator's reference type | No | 3 | |
| 4226(i) | New | 25.7.35 [range.to.input] | to_input_view::iterator cannot be compared to itsconst sentinel | Yes | 2 | |
| 4418(i) | New | 25.8.5 [coro.generator.promise] | co_yield elements_of(vector<int>()) does not compile | Yes | 2 | |
| 4057(i) | New | 25.8.6 [coro.generator.iterator] | generator::iterator'soperator* is notnoexcept when it can be | Yes | 3 | |
| 4117(i) | New | 25.8.6 [coro.generator.iterator] | generator::iterator should provideiterator_concept | Yes | 4 | |
| Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates |
|---|
| 2963(i) | New | 26 [algorithms] | Algorithms with underspecified iterator requirements | No | 3 | |
| 1238(i) | Open | 26 [algorithms] | Defining algorithms taking iterator for range | No | 3 | |
| 2173(i) | Open | 26 [algorithms] | The meaning ofoperator + in the description of the algorithms | Yes | 4 | |
| 4277(i) | New | 26.2 [algorithms.requirements] | §[algorithms.requirements] It is unclear what an algorithm is | Yes | 4 | |
| 3049(i) | Open | 26.2 [algorithms.requirements] | Missing wording allowing algorithms to use copies of function objects as substitutes for their parameters | Yes | 3 | |
| 4273(i) | New | 26.3.6 [execpol] | Standard execution policy types should be conventional tag class types | Yes | 3 | |
| 4095(i) | Tentatively NAD | 26.4 [algorithm.syn] | ranges::fold_meow should explicitly spell out the return type | Yes | | |
| 4457(i) | New | 26.4 [algorithm.syn] | freestanding forstable_sort,stable_partition andinplace_merge | Yes | | |
| 3793(i) | New | 26.6.5 [alg.foreach] | Requirements for some algorithms'Size template parameters are unclear | No | 3 | |
| 4241(i) | LEWG | 26.6.5 [alg.foreach] | ranges::for_each(_n) should be less constrained | Yes | 3 | |
| 4093(i) | New | 26.6.18 [alg.fold] | ranges::fold_left_first_with_iter incorrectly constructsoptional<U> | Yes | 3 | |
| 4094(i) | New | 26.6.18 [alg.fold] | ranges::fold_meow is overconstrained | Yes | 3 | |
| 3969(i) | New | 26.6.18 [alg.fold] | std::ranges::fold_left_first_with_iter should be more ADL-proof | Yes | 3 | |
| 4262(i) | New | 26.7.1 [alg.copy] | copy_if,remove_copy,remove_copy_if,unique_copy have too strong preconditions | Yes | 3 | |
| 3089(i) | New | 26.7.1 [alg.copy] | copy_n should require non-overlapping ranges | Yes | 3 | |
| 2471(i) | Open | 26.7.1 [alg.copy] | copy_n's number ofInputIterator increments unspecified | No | 3 | |
| 3868(i) | LEWG | 26.7.5 [alg.replace] | Constrained algorithms should not requireoutput_iterator | Yes | 4 | |
| 4103(i) | New | 26.7.9 [alg.unique] | ranges::unique_copy's constraints for the case whereresult is aninput_iterator are not quite right | Yes | 3 | |
| 2267(i) | New | 26.8.2.4 [partial.sort.copy] | partial_sort_copy underspecified for ranges of two different types | No | 3 | |
| 4162(i) | New | 26.8.3 [alg.nth.element] | Worst time complexity of non-parallel versions ofnth_element is underspecified | Yes | 3 | |
| 4111(i) | New | 26.8.4 [alg.binary.search] | LWG 270 and ranges version of binary search algorithms | No | 3 | |
| 2973(i) | LEWG | 26.8.6 [alg.merge] | inplace_merge exact comparison count complexity prohibits useful real-world optimizations | Yes | 4 | |
| 3534(i) | LEWG | 26.8.7.4 [set.intersection] | ranges::set_intersection andranges::set_difference algorithm requirements are too strict | Yes | 3 | |
| 3029(i) | Open | 26.8.8.3 [pop.heap] | pop_heap over-constrains input | Yes | 3 | |
| 4167(i) | New | 26.8.9 [alg.min.max] | Use of "smaller" and "larger" inmin,max, andminmax is unclear | Yes | 3 | |
| 4034(i) | New | 26.8.9 [alg.min.max] | Clarify specification ofstd::min andstd::max | Yes | 4 | |
| 3487(i) | New | 26.10 [numeric.ops] | Missing precondition on input and output aliasing of [numeric.ops] | No | 3 | |
| 3060(i) | New | 26.10.8 [exclusive.scan] | XXX_scan algorithms are specified to work with move-onlyT, but are specified to makeN copies ofT into the destination range | No | 2 | |
| 3463(i) | New | 26.10.11 [transform.inclusive.scan] | Incorrect requirements fortransform_inclusive_scan without initial value | Yes | 3 | |
| 3628(i) | New | 26.11 [specialized.algorithms] | "Effects: Equivalent to:" and uninitialized memory algorithms | No | 3 | |
| 3063(i) | New | 26.11 [specialized.algorithms] | Parallel algorithms in<memory> are underspecified | No | 3 | |
| 4452(i) | New | 26.11.1 [specialized.algorithms.general] | Makederef-move constexpr | Yes | | |
| 3647(i) | New | 26.11.2 [special.mem.concepts] | nothrow-input-iterator constraints should not mention copying | Yes | 3 | |
| 3888(i) | New | 26.11.8 [specialized.construct] | Most ranges uninitialized memory algorithms are underconstrained | Yes | 3 | |
| 3889(i) | New | 26.11.9 [specialized.destroy] | std::(ranges::)destroy_at should destroy array elements in the decreasing index order | Yes | 3 | |
| 4077(i) | New | 26.12.2 [alg.rand.generate] | Unclear preconditions ofstd::ranges::generate_random | No | 2 | |
| Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates |
|---|
| 2513(i) | New | 27.1 [strings.general] | Missing requirements forbasic_string::value_type | No | 4 | |
| 4152(i) | New | 27.2.2 [char.traits.require] | The primary template ofstd::char_traits is totally underspecified | Yes | 4 | |
| 3694(i) | New | 27.2.2 [char.traits.require] | Shouldtraits_type::length be customizable? | No | 4 | |
| 3942(i) | New | 27.2.4 [char.traits.specializations] | Inconsistent use ofconst char_type& in standard specializations ofstd::char_traits | Yes | 3 | |
| 4063(i) | New | 27.2.4.2 [char.traits.specializations.char] | Freestandingstd::char_traits<char>::eof depends on non-freestandingEOF | No | 2 | |
| 2959(i) | New | 27.2.4.4 [char.traits.specializations.char16.t] | char_traits<char16_t>::eof is a valid UTF-16 code unit | No | 3 | |
| 3989(i) | New | 27.3 [string.view] | The whole range for an iterator obtained from astd::span orstd::basic_string_view is not clear | No | 3 | |
| 2883(i) | LEWG | 27.3 [string.view] | The standard library should providestring_view parameters instead or in addition for functions defined withchar const * orstring const & as parameter types. | No | 4 | |
| 3457(i) | New | 27.3.3 [string.view.template] | *this is not invalidated | Yes | 3 | |
| 4410(i) | New | 27.3.3.2 [string.view.cons] | basic_string_view(It begin, End end) is underconstrained | Yes | 4 | |
| 4102(i) | New | 27.3.3.2 [string.view.cons] | string_view(Iter, Iter) constructor breaks existing code | No | 2 | |
| 3339(i) | New | 27.4.3 [basic.string] | Move-constructed empty-container capacity | No | 3 | |
| 3451(i) | New | 27.4.3 [basic.string] | Inconsistently explicit deduction guides | Yes | 3 | |
| 4029(i) | New | 27.4.3.1 [basic.string.general] | basic_string accidentally fails to meet the reversible container requirements | Yes | 3 | |
| 3663(i) | New | 27.4.3.3 [string.cons] | basic_string(const T&, const Alloc&) turns moves into copies | Yes | 3 | |
| 4378(i) | New | 27.4.3.6 [string.access] | Inconsistency betweenstd::basic_string'sdata() andoperator[] specification | Yes | 4 | |
| 3662(i) | New | 27.4.3.7.2 [string.append] | basic_string::append/assign(NTBS, pos, n) suboptimal | Yes | 3 | |
| 4259(i) | New | 27.4.3.8.2 [string.find] | P1148R0 changed the return values of searching functions ofstd::basic_string on some platforms | Yes | 3 | |
| 4261(i) | New | 27.4.3.8.2 [string.find] | P1206R7 broke uses of container adaptors with old custom sequence containers | No | 3 | |
| 3837(i) | New | 27.4.4.5 [string.erasure] | std::erase_if overloads for non-associative containers should move (andnot copy) their predicate object | Yes | 3 | |
| 2237(i) | New | 27.5 [c.strings] | <cuchar> macros | No | 4 | |
| 2238(i) | Open | 27.5 [c.strings] | Problematic iterator-pair constructor of containers | No | 3 | |
| Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates |
|---|
| 4421(i) | New | 28.2.2 [charconv.to.chars] | Clarify the output encoding ofto_chars for integers | Yes | 3 | |
| 4430(i) | New | 28.2.3 [charconv.from.chars] | from_chars should not parse"0b" base prefixes | Yes | | |
| 3456(i) | New | 28.2.3 [charconv.from.chars] | Pattern used bystd::from_chars is underspecified | Yes | 3 | |
| 3082(i) | Open | 28.2.3 [charconv.from.chars] | from_chars specification regarding floating point rounding is inconsistent | Yes | 2 | |
| 3081(i) | Open | 28.2.3 [charconv.from.chars] | Floating pointfrom_chars API does not distinguish between overflow and underflow | Yes | 2 | |
| 3353(i) | New | 28.3.3.1 [locale] | locale's copy assignment operator should returnlocale& | Yes | 3 | |
| 3674(i) | New | 28.3.3.1.4 [locale.members] | Removal of requirement for locale names for construction of locales not explained | Yes | 2 | |
| 4287(i) | New | 28.3.4.2.5.3 [locale.codecvt.virtuals] | §[locale.codecvt.virtuals]do_in anddo_out could do with better specification | Yes | 3 | |
| 3337(i) | New | 28.3.4.2.5.3 [locale.codecvt.virtuals] | What is "is initialized" supposed to mean? | No | 3 | |
| 4163(i) | Tentatively NAD | 28.3.4.3.2.3 [facet.num.get.virtuals] | Can the overload ofstd::num_get::do_get forbool call the overload forlong? | No | | |
| 3689(i) | New | 28.3.4.3.2.3 [facet.num.get.virtuals] | num_get overflow determination unclear and incorrect | No | 3 | |
| 3214(i) | New | 28.3.4.3.2.3 [facet.num.get.virtuals] | §[facet.num.get.virtuals] doesn't say what it means for digit grouping to be consistent | No | 4 | |
| 4216(i) | New | 28.3.4.3.3.3 [facet.num.put.virtuals] | num_put::do_put andvoid pointers | Yes | 3 | |
| 2703(i) | New | 28.3.4.3.3.3 [facet.num.put.virtuals] | No provision for fill-padding whenboolalpha is set | No | 3 | |
| 2702(i) | New | 28.3.4.3.3.3 [facet.num.put.virtuals] | num_put::do_put(..., bool) performs ill-formeddo_put call | No | 3 | |
| 2117(i) | Open | 28.3.4.3.3.3 [facet.num.put.virtuals] | ios_base manipulators should haveshowgrouping/noshowgrouping | No | 3 | |
| 4285(i) | New | 28.3.4.6.2.2 [locale.time.get.members] | time_get::do_get_date is problematic even after LWG 461 | Yes | 3 | |
| 3275(i) | New | 28.3.4.6.2.3 [locale.time.get.virtuals] | Why doestime_get::do_get require a valid pointer when none of the others do? | Yes | 3 | |
| 2512(i) | Open | 28.3.4.6.2.3 [locale.time.get.virtuals] | Y2K bites; what is an "unambiguous year identifier"? | No | 4 | |
| 2983(i) | New | 28.3.4.7.3.3 [locale.money.put.virtuals] | money_put::do_put underspecified | Yes | 3 | |
| 2691(i) | New | 28.3.4.7.4 [locale.moneypunct] | money_base::space anddo_put: U+0020 versusfill | Yes | 3 | |
| 4263(i) | New | 28.5 [format] | What shouldstd::format_to etc. behave when the output is overlong? | No | 3 | |
| 3651(i) | New | 28.5 [format] | Unspecified lifetime guarantees for the format string | No | 3 | |
| 3997(i) | New | 28.5.1 [format.syn] | std::formatter specializations should be consistently restricted to supported character types | No | 4 | |
| 3641(i) | New | 28.5.1 [format.syn] | Addoperator== toformat_to_n_result | Yes | 3 | |
| 3939(i) | New | 28.5.2.2 [format.string.std] | §[format.string.std]char is not formatted as a character whencharT iswchar_t | No | 3 | |
| 3644(i) | New | 28.5.2.2 [format.string.std] | std::format does not define "integer presentation type" | Yes | 2 | |
| 3586(i) | New | 28.5.2.2 [format.string.std] | Formatting character alignment inconsistencies | Yes | 2 | |
| 4090(i) | Open | 28.5.2.2 [format.string.std] | Underspecified use of locale facets for locale-dependentstd::format | Yes | 3 | |
| 4078(i) | New | 28.5.5 [format.functions] | What if arguments alias the output buffer instd::format_to? | No | 4 | |
| 3993(i) | New | 28.5.6.1 [formatter.requirements] | Theparse function of aBasicFormatter type needs to beconstexpr | Yes | 3 | |
| 4240(i) | New | 28.5.6.3 [format.formattable] | The formattable type is not aformattable type | Yes | 2 | |
| 3943(i) | New | 28.5.6.3 [format.formattable] | Clarify lifetime requirements ofBasicFormatter andFormatter | Yes | 3 | |
| 4146(i) | New | 28.5.6.4 [format.formatter.spec] | §[format.formatter.spec]/3 unconditionally enables nonlocking for container adaptors | Yes | 2 | |
| 3706(i) | New | 28.5.6.4 [format.formatter.spec] | How doesstd::format work with character arrays of unknown bound? | No | 3 | |
| 4284(i) | LEWG | 28.5.6.4 [format.formatter.spec] | Integer-class types should be formattable | Yes | 3 | |
| 4221(i) | New | 28.5.7 [format.range] | Cannot format const-iterable only ranges | No | 2 | |
| 4246(i) | Tentatively NAD | 28.5.7.2 [format.range.formatter] | Redundant constraint inrange_formatter::format | Yes | | |
| 4107(i) | New | 28.5.7.4 [format.range.fmtmap] | Map formatter may conflict with user-defined specializations ofpair/tuple formatters | Yes | 3 | |
| 2490(i) | New | 28.6 [re] | <regex> needs lots ofnoexcept | No | 3 | |
| 523(i) | Open | 28.6 [re] | regex case-insensitive character ranges are unimplementable as specified | No | 4 | |
| 3835(i) | New | 28.6.1 [re.general] | Requirements forCharT in the regex library | No | 4 | |
| 3606(i) | New | 28.6.2 [re.req] | Missingregex_traits::locale_type requirements | No | 3 | |
| 2431(i) | New | 28.6.2 [re.req] | Missing regular expression traits requirements | No | 3 | |
| 3998(i) | New | 28.6.4 [re.const] | Constants instd::regex_constants should be allowed to be enumerators | No | 3 | |
| 2331(i) | Open | 28.6.4.2 [re.synopt] | regex_constants::collate's effects are inaccurately summarized | Yes | 3 | |
| 3605(i) | New | 28.6.4.3 [re.matchflag] | regex_constants::match_prev_avail is underspecified | No | 3 | |
| 2338(i) | Open | 28.6.6 [re.traits] | §[re.traits]/7 expects of locale facets something not guaranteed by [locale.facet]/4 | Yes | 3 | |
| 3261(i) | New | 28.6.7 [re.regex] | regex components'noexcept annotations appear broken for POCMA or throwingBidirectionalIterator | No | 3 | |
| 3341(i) | New | 28.6.7.2 [re.regex.construct] | basic_regex range constructor: Missing requirements for iterator types | No | 3 | |
| 3630(i) | New | 28.6.7.2 [re.regex.construct] | Inconsistentbasic_regex construction and assignment from iterator range | No | 4 | |
| 3603(i) | New | 28.6.7.2 [re.regex.construct] | Matching of null characters by regular expressions is underspecified | No | 3 | |
| 3604(i) | New | 28.6.7.2 [re.regex.construct] | What is the effect of an invalid value of typesyntax_option_type? | No | 3 | |
| 2137(i) | Open | 28.6.7.3 [re.regex.assign] | Misleadingly constrained post-condition in the presence of exceptions | Yes | 3 | |
| 3126(i) | New | 28.6.8 [re.submatch] | There's nostd::sub_match::compare(string_view) overload | Yes | 3 | |
| 2216(i) | New | 28.6.10.4 [re.alg.replace] | regex_replace(basic_string) allocator handling | No | 3 | |
| 2220(i) | Open | 28.6.11.2.3 [re.tokiter.comp] | Under-specification ofoperator== forregex_token_iterator | Yes | 3 | |
| 2546(i) | New | 28.6.12 [re.grammar] | Implementability of locale-sensitiveUnicodeEscapeSequence matching | No | 4 | |
| 2986(i) | New | 28.6.12 [re.grammar] | Handling of multi-character collating elements by theregex FSM is underspecified | No | 4 | |
| 2987(i) | New | 28.6.12 [re.grammar] | Relationship betweentraits_inst.lookup_collatename and theregex FSM is underspecified with regards toClassAtomCollatingElement | No | 3 | |
| Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates |
|---|
| 4161(i) | New | 29.4 [complex.numbers] | Some free functions don't automatically work for program-definedstd::complex<NonFloatingPoint> | No | 3 | |
| 3933(i) | New | 29.4.3 [complex] | P1467R9 accidentally changed the signatures of certain constructors ofstd::complex | Yes | 4 | |
| 3934(i) | New | 29.4.3 [complex] | std::complex<T>::operator=(const T&) has no specification | Yes | 3 | |
| 2714(i) | New | 29.4.6 [complex.ops] | complex stream extraction underspecified | Yes | 3 | |
| 2846(i) | New | 29.4.10 [cmplx.over] | Undefined phrase "effectively cast" | Yes | 3 | |
| 4109(i) | New | 29.5.3.1 [rand.req.genl] | Instantiating templates in §[rand] withint8_t/uint8_t is undefined behavior | Yes | 3 | |
| 4289(i) | LEWG | 29.5.3.2 [rand.req.seedseq] | Seed sequence is overspecified | Yes | 3 | |
| 4212(i) | New | 29.5.4.5 [rand.eng.philox] | Make the round states in [rand.eng.philox] explicit | Yes | 3 | |
| 3402(i) | New | 29.5.9.3.4 [rand.dist.bern.negbin] | Wording fornegative_binomial_distribution is unclear as a consequence of LWG 2406 resolution | No | 3 | |
| 4052(i) | New | 29.5.9.6.2 [rand.dist.samp.pconst] | Bogus requirements forpiecewise_linear_distribution | Yes | 4 | |
| 3964(i) | New | 29.6.3.3 [valarray.transcend] | std::atan2 andstd::pow overloads that take twostd::valarray parameters should require the arguments to have the same length | Yes | 4 | |
| 2423(i) | New | 29.6.5 [template.slice.array] | Missing specificationslice_array,gslice_array,mask_array,indirect_array copy constructor | Yes | 4 | |
| 2115(i) | Open | 29.6.8 [template.mask.array] | Undefined behaviour forvalarray assignments withmask_array index? | No | 4 | |
| 3693(i) | New | 29.7 [c.math] | §[c.math] Can any offloat/double/long double overloads be fused into template overloads? | No | 2 | |
| 2847(i) | New | 29.7.1 [cmath.syn] | sin(float) should callsinf(float) | No | 3 | |
| 2923(i) | New | 29.7.1 [cmath.syn] | noexcept is inconsistently applied across headers which import components of the C standard library | No | 4 | |
| 3093(i) | New | 29.7.2 [c.math.abs] | LWG 2294/2192 missed astd::abs overload | No | 3 | |
| 3172(i) | New | 29.7.3 [c.math.hypot3] | 3-argstd::hypot is underspecified compared to the 2-arg overload | Yes | 3 | |
| 3066(i) | New | 29.7.6 [sf.cmath] | "report a domain error" in [sf.cmath]/1 is underspecified | No | 3 | |
| 4185(i) | New | 29.9.7 [linalg.helpers] | Ill-formed, no diagnostic required on runtime behavior | No | 3 | |
| 4409(i) | New | 29.10 [simd] | Constant expressionranges::size(r)Constraints andMandates in [simd] | Yes | 3 | |
| 4414(i) | New | 29.10.2.2 [simd.expos.abi] | §[simd.expos.abi]deduce-abi-t is underspecified and incorrectly referencedfromrebind andresize | Yes | | |
| 4391(i) | Tentatively NAD | 29.10.7.2 [simd.ctor] | Ambiguities ofsimd::basic_vec constructor | Yes | | |
| 4436(i) | New | 29.10.7.2 [simd.ctor] | simd broadcast is overconstrained —std::cw<0.f> is not convertible tosimd::vec<float16_t> | Yes | | |
| 4390(i) | LEWG | 29.10.7.2 [simd.ctor] | simd::basic_vec(U&&) default template parameter | Yes | 4 | |
| 4408(i) | LEWG | 29.10.7.3 [simd.subscr] | Hardeningsimd::vec::operator[] | Yes | 3 | |
| 4392(i) | New | 29.10.8.7 [simd.loadstore] | simd::unchecked_load misses difference type casting | Yes | 3 | |
| 4394(i) | New | 29.10.8.7 [simd.loadstore] | simd::unchecked_load(I first, S last) constructspan maybe ill-formed | Yes | 3 | |
| 4393(i) | New | 29.10.8.11 [simd.permute.memory] | simd::unchecked_scatter_to is underconstrained | Yes | 2 | |
| 4386(i) | New | 29.10.8.13 [simd.alg] | std::simd::select(bool c, const T& a, const U& b) is underconstrained | Yes | 3 | |
| 4402(i) | New | 29.10.9.1 [simd.mask.overview] | List-initialization of iterators in [simd.mask.overview] | Yes | 3 | |
| 4238(i) | New | 29.10.9.4 [simd.mask.unary] | simd_mask<complex<double>>::operator+/-/~ return a disabledsimd specialization | Yes | 1 | |
| Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates |
|---|
| 423(i) | Open | 31 [input.output] | Effects of negativestreamsize in iostreams | Yes | 3 | |
| 3696(i) | New | 31.2.2 [stream.types] | "Basic integral types" should not be used | Yes | 3 | |
| 3910(i) | New | 31.4.2 [iostream.objects.overview] | The effects of including<iostream> on initialization are not yet precisely specified | Yes | 4 | |
| 3675(i) | New | 31.5.2.6 [ios.base.storage] | std::ios_base::iword/pword might be misspecified | Yes | 4 | |
| 2675(i) | New | 31.5.2.7 [ios.base.callback] | register_callback can fail | No | 3 | |
| 4192(i) | New | 31.5.2.8 [ios.base.cons] | §[ios.base.cons]ios_base members may not have indeterminate values after construction | Yes | 3 | |
| 2214(i) | Open | 31.5.4.2 [basic.ios.cons] | Clarifybasic_ios::init call restrictions | Yes | 4 | |
| 2504(i) | New | 31.6.3 [streambuf] | basic_streambuf is not an abstract class | No | 3 | |
| 3658(i) | New | 31.6.3.3.5 [streambuf.pub.put] | basic_streambuf::sputn is both overspecified and underspecified | Yes | 3 | |
| 2342(i) | New | 31.7.6.2 [ostream] | User conversion towchar_t const* or towchar_t not invoked foroperator<< | Yes | 4 | |
| 2497(i) | New | 31.7.6.2.4 [ostream.sentry] | Use ofuncaught_exception() | Yes | 3 | |
| 4101(i) | New | 31.7.6.3.2 [ostream.inserters.arithmetic] | LWG 117 loses the sign for negative NaN on some architectures | Yes | 3 | |
| 4039(i) | New | 31.7.6.3.5 [ostream.formatted.print] | §[ostream.formatted.print]: Inappropriate usage ofbadbit in definition ofvprint_unicode/vprint_nonunicode | Yes | 4 | |
| 3501(i) | New | 31.7.6.5 [ostream.manip] | basic_syncbuf-related manipulators refer to someAllocator without defining it | Yes | 3 | |
| 4364(i) | New | 31.7.7 [std.manip] | SFINAE-friendliness onoperator<< andoperator>> for unspecified I/O manipulators | No | 4 | |
| 3937(i) | New | 31.7.7 [std.manip] | I/O manipulators should be specified in terms of base classes | No | 3 | |
| 2984(i) | New | 31.7.8 [ext.manip] | put_money(99) is unnecessarily undefined | Yes | 3 | |
| 3309(i) | New | 31.8 [string.streams] | Is<ios> implicitly#included by<sstream>,<fstream> etc.? | No | 3 | |
| 3992(i) | Tentatively NAD | 31.8.2.4 [stringbuf.members] | basic_stringbuf::str()&& should enforce 𝒪(1) | Yes | 4 | |
| 3097(i) | New | 31.8.2.5 [stringbuf.virtuals] | basic_stringbuf seekoff effects trigger undefined behavior and have contradictory returns | No | 3 | |
| 2286(i) | Open | 31.8.2.5 [stringbuf.virtuals] | stringbuf::underflow() underspecified | Yes | 4 | |
| 3496(i) | New | 31.11.2.4 [syncstream.syncbuf.members] | What does "uniquely associated" mean forbasic_syncbuf::emit()? | No | 3 | |
| 3497(i) | New | 31.11.2.4 [syncstream.syncbuf.members] | Postconditions forbasic_syncbuf::emit() | No | 3 | |
| 3098(i) | New | 31.12.6.5.9 [fs.path.decompose] | Misleading example forfilesystem::path::filename() | Yes | 3 | |
| 3699(i) | New | 31.12.6.5.11 [fs.path.gen] | lexically_relative on UNC drive paths (\\?\C:\...) results in a default-constructed value | No | 3 | |
| 3794(i) | New | 31.12.6.6 [fs.path.itr] | std::filesystem::path::iterator::reference should be allowed to bestd::filesystem::path | Yes | 3 | |
| 4070(i) | Open | 31.12.6.9.2 [fs.path.fmtr.funcs] | Transcoding bystd::formatter<std::filesystem::path> | Yes | 2 | |
| 2947(i) | New | 31.12.8.1 [fs.enum.path.format] | Clarify several filesystem terms | No | 3 | |
| 3078(i) | New | 31.12.10 [fs.class.directory.entry] | directory_entry,directory_iterator andrecursive_directory_iterator perform needless path copies | No | 3 | |
| 3668(i) | New | 31.12.11.2 [fs.dir.itr.members] | [recursive_]directory_iterator constructors refer to undefinedoptions | Yes | 3 | |
| 2708(i) | Open | 31.12.12.2 [fs.rec.dir.itr.members] | recursive_directory_iterator::recursion_pending() is incorrectly specified | Yes | 2 | |
| 4279(i) | New | 31.12.13.2 [fs.op.absolute] | §[fs.op.absolute] Non-normative encouragement should beRecommended practice | No | 4 | |
| 3057(i) | Open | 31.12.13.4 [fs.op.copy] | Correctcopy_options handling | Yes | 2 | |
| 3056(i) | New | 31.12.13.5 [fs.op.copy.file] | copy_file() copies which attributes? | Yes | 3 | |
| 3744(i) | New | 31.12.13.6 [fs.op.copy.symlink] | copy_symlink(junction, new_symlink)'s behavior is unclear | No | 3 | |
| Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates |
|---|
| 2819(i) | New | 32.2.5 [thread.req.lockable] | UnspecifiedReturn type: elements | Yes | 3 | |
| 3499(i) | New | 32.2.5.4 [thread.req.lockable.timed] | Timed lockable and mutex requirements are imprecise aboutduration andtime_point | No | 3 | |
| 3924(i) | New | 32.3.1 [thread.stoptoken.intro] | Stop token data race avoidance requirements unclear | Yes | 3 | |
| 4362(i) | Tentatively NAD | 32.3.8 [stoptoken.inplace] | Inconsistent usage ofconstexpr forinplace_stop_token andinplace_stop_source | Yes | | |
| 1484(i) | LEWG | 32.4.3 [thread.thread.class] | Need a way to join a thread with a timeout | No | 4 | |
| 3516(i) | New | 32.4.3.2 [thread.thread.id] | thread::id spaceship may be inconsistent with equality | Yes | 3 | |
| 3475(i) | New | 32.4.3.3 [thread.thread.constr] | std::thread's constructor needs to be able to report general memory allocation failures | Yes | 3 | |
| 4310(i) | Core | 32.4.3.3 [thread.thread.constr] | Is "the completion of the invocation of the constructor" considered as an expression? | No | 4 | |
| 3633(i) | New | 32.5 [atomics] | Atomics are copy constructible and copy assignable fromvolatile atomics | Yes | 3 | |
| 3220(i) | New | 32.5.2 [atomics.syn] | P0558 broke conforming C++14 uses of atomicshared_ptr | Yes | 3 | |
| 2236(i) | Open | 32.5.2 [atomics.syn] | kill_dependency unconditionally noexcept | No | 4 | |
| 4309(i) | Tentatively NAD | 32.5.4 [atomics.order] | How are twoseq_cst operations ordered in the single total order if these two operations are unsequenced? | No | | |
| 3980(i) | Tentatively NAD | 32.5.4 [atomics.order] | The read exclusive ownership of an atomic read-modify-write operation and whether its read and write are two operations are unclear | Yes | | |
| 3999(i) | New | 32.5.4 [atomics.order] | P0439R0 changed the value category of memory order constants | Yes | 4 | |
| 3268(i) | New | 32.5.4 [atomics.order] | memory_order::memory_order_foo broken in C++20 | Yes | 4 | |
| 3941(i) | Open | 32.5.4 [atomics.order] | §[atomics.order] inadvertently prohibits widespread implementation techniques | No | 3 | |
| 2265(i) | Open | 32.5.4 [atomics.order] | 29.3p9 appears to rule out some acceptable executions | No | 4 | |
| 1459(i) | LEWG | 32.5.4 [atomics.order] | Overlapping evaluations are allowed | No | 4 | 1458 |
| 4174(i) | SG1 | 32.5.4 [atomics.order] | How does [atomics.order] p3 apply when then modification is an initialization? | No | 3 | |
| 4177(i) | SG1 | 32.5.4 [atomics.order] | §[atomics.order] p8 "circularly depend on their own computation" is unclear for loop | No | 4 | |
| 4004(i) | SG1 | 32.5.4 [atomics.order] | The load and store operation in §[atomics.order] p1 is ambiguous | No | 3 | |
| 3263(i) | New | 32.5.6 [atomics.wait] | Atomic waiting function calls should only be unblocked once | Yes | 3 | |
| 3288(i) | New | 32.5.6 [atomics.wait] | atomic<T>::notify_one is unimplementable | Yes | 2 | |
| 4244(i) | Tentatively NAD | 32.5.7.2 [atomics.ref.ops] | Whether the spuriously failed comparison applies tocompare_exchange_strong is unclear | No | | |
| 4453(i) | New | 32.5.7.2 [atomics.ref.ops] | atomic_ref<cv T>::required_alignment should be the same as forT | Yes | | |
| 3409(i) | New | 32.5.7.2 [atomics.ref.ops] | Too lax description ofatomic_ref<T>::required_alignment | Yes | 3 | |
| 4321(i) | Tentatively NAD | 32.5.8.2 [atomics.types.operations] | How are evaluations occurring within a store and a load operation ordered where the store synchronized with the load | No | | |
| 3417(i) | Open | 32.5.8.2 [atomics.types.operations] | Missingvolatile atomic deprecations | Yes | 3 | |
| 3047(i) | New | 32.5.8.3 [atomics.types.int] | atomic compound assignment operators can cause undefined behavior when correspondingfetch_meow members don't | Yes | 3 | |
| 4194(i) | Tentatively NAD | 32.5.8.5 [atomics.types.pointer] | atomic<void*> should use generic class template | Yes | | |
| 3906(i) | New | 32.5.8.5 [atomics.types.pointer] | "Undefined address" is undefined | No | 3 | |
| 3418(i) | New | 32.5.9 [atomics.nonmembers] | Deprecated free functions in<atomic> | Yes | 3 | |
| 1488(i) | LEWG | 32.6 [thread.mutex] | Improve interoperability between the C++0x and C1x threads APIs | No | 4 | |
| 936(i) | LEWG | 32.6.4 [thread.mutex.requirements] | Mutex type overspecified | No | 4 | 961 |
| 961(i) | LEWG | 32.6.4 [thread.mutex.requirements] | Various threading bugs #11 | No | 4 | 936 |
| 1493(i) | LEWG | 32.6.4 [thread.mutex.requirements] | Addmutex,recursive_mutex,is_locked function | No | 4 | |
| 3504(i) | New | 32.7.4 [thread.condition.condvar] | condition_variable::wait_for is overspecified | Yes | 3 | |
| 3898(i) | New | 32.9.3.3 [thread.barrier.class] | Possibly unintended preconditions for completion functions ofstd::barrier | Yes | 3 | |
| 2530(i) | Open | 32.10.5 [futures.state] | Clarify observable side effects of releasing a shared state | No | 3 | |
| 2532(i) | Open | 32.10.6 [futures.promise] | Satisfying apromise at thread exit | Yes | 3 | |
| 3582(i) | New | 32.10.9 [futures.async] | Unclear wherestd::async exceptions are handled | Yes | 3 | |
| 2202(i) | Deferred | 32.10.9 [futures.async] | Missing allocator support byasync | No | 4 | |
| 4160(i) | New | 32.10.10.1 [futures.task.general] | packaged_task should reject rvalue reference return types | Yes | 3 | |
| 4158(i) | New | 32.10.10.2 [futures.task.members] | packaged_task::operator= should abandon its shared state | Yes | 3 | |
| Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates |
|---|
| 4353(i) | New | 33 [exec] | Uses ofMANDATE-NOTHROW in CPOs should not enclose CPO argument sub-expressions | No | 3 | |
| 4260(i) | New | 33.2.1 [exec.queryable.general] | Query objects must be default constructible | Yes | 2 | |
| 4326(i) | New | 33.5.1 [exec.fwd.env] | Standard defined queries can't customizeforwarding_query_t by inheriting from it | Yes | 4 | |
| 4354(i) | SG1 | 33.5.8 [exec.get.fwd.progress] | Reconsiderweakly_parallel as the defaultforward_progress_guarantee | Yes | 1 | |
| 4327(i) | New | 33.6 [exec.sched] | Equal schedulers should be required to have same behaviour | No | 3 | |
| 4143(i) | New | 33.7.2 [exec.set.value] | execution::set_value/set_error/set_stopped/start should always returnvoid | Yes | 2 | |
| 4213(i) | New | 33.9 [exec.snd] | Sender spec depends on unspecified order of evaluation | No | 2 | |
| 4199(i) | New | 33.9.1 [exec.snd.general] | constraints on user customizations of standard sender algorithms are incorrectly specified | No | 1 | |
| 4455(i) | New | 33.9.2 [exec.snd.expos] | Add missing constraint tobasic-sender::get_completion_signatures definition | Yes | | |
| 4456(i) | New | 33.9.2 [exec.snd.expos] | DecayData andChild inmake-sender | Yes | | |
| 4278(i) | New | 33.9.2 [exec.snd.expos] | Consider changing howget-domain-early(sndr) works | No | | |
| 4248(i) | New | 33.9.2 [exec.snd.expos] | Late domain-based dispatching ofschedule_from andcontinues_on are flipped | Yes | 1 | |
| 4190(i) | New | 33.9.2 [exec.snd.expos] | Specification ofcompletion-signatures-for in [exec.snd.expos]/p39 is recursive | Yes | 2 | |
| 4368(i) | New | 33.9.5 [exec.domain.default] | Potential dangling reference returned fromtransform_sender | Yes | 1 | |
| 4363(i) | Tentatively NAD | 33.9.6 [exec.snd.transform] | transform_sender comparing types ignoringcv-qualifiers doesn't take into account differences in value category | Yes | | |
| 4355(i) | New | 33.9.10 [exec.connect] | connect-awaitable() should mandatercvr can receive all completion-signals rather than using constraints | Yes | 2 | |
| 4356(i) | New | 33.9.10 [exec.connect] | connect() should useget_allocator(get_env(rcvr)) to allocate the coroutine-state for aconnect-awaitable coroutine | Yes | 2 | |
| 4357(i) | New | 33.9.10 [exec.connect] | connect-awaitable should useis_void_v to check for result-type ofco_await expression instead ofsame_as<void> | Yes | 4 | |
| 4395(i) | New | 33.9.12.3 [exec.write.env] | write_env implementation-detail lambda should have explicit return type | No | 2 | |
| 4419(i) | New | 33.9.12.10 [exec.let] | let_value/error/stopped should specify the attributes of their senders | No | 1 | |
| 4215(i) | New | 33.12.1 [exec.run.loop] | run_loop::finish should benoexcept | Yes | 2 | |
| 4359(i) | New | 33.13.1 [exec.as.awaitable] | as_awaitable(expr, p) does not define semantics of call ifp is not an lvalue | Yes | | |
| 4133(i) | New | 33.13.1 [exec.as.awaitable] | awaitable-receiver's members are potentially throwing | No | 1 | |
| 4361(i) | LEWG | 33.13.1 [exec.as.awaitable] | awaitable-receiver::set_value should useMandates instead of constraints | Yes | 1 | |
| 4344(i) | New | 33.13.3 [exec.affine.on] | affine_on has no specification for the default | Yes | 2 | |
| 4329(i) | LEWG | 33.13.3 [exec.affine.on] | Customising affine_on for other algorithms | No | 3 | |
| 4330(i) | LEWG | 33.13.3 [exec.affine.on] | affine_on semantics | No | 2 | |
| 4331(i) | LEWG | 33.13.3 [exec.affine.on] | affine_on shape may be wrong | No | 2 | |
| 4332(i) | LEWG | 33.13.3 [exec.affine.on] | affine_on shouldn't forward the stop token to the scheduling operation | No | 2 | |
| 4336(i) | LEWG | 33.13.5 [exec.task.scheduler] | bulk vs.task_scheduler | No | 2 | |
| 4339(i) | New | 33.13.6 [exec.task] | task's coroutine frame may be released late | Yes | 2 | |
| 4338(i) | LEWG | 33.13.6.2 [task.class] | sender unaware coroutines should be able toco_await atask | No | 2 | |
| 4348(i) | LEWG | 33.13.6.2 [task.class] | task doesn't support symmetric transfer | No | 2 | |
| 4337(i) | Tentatively NAD | 33.13.6.5 [task.promise] | co_await change_coroutine_scheduler(s) requires assignable | Yes | | |
| 4347(i) | New | 33.13.6.5 [task.promise] | task's stop source is always created | No | 2 | |
| 4335(i) | LEWG | 33.13.6.5 [task.promise] | task shadows the environment's allocator | No | 2 | |
| 4333(i) | LEWG | 33.13.6.5 [task.promise] | task uses unusual allocator customisation | No | 2 | |
| 4334(i) | LEWG | 33.13.6.5 [task.promise] | task<...>::promise_type supports arbitraryallocator_arg position | No | 2 | |