| 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 | 
 | 
| 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 concepts
is unclear | 
No | 
3 | 
 | 
| 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 | 
 | 
| 3977(i) | 
New | 
16.3.3.3.3 [bitmask.types] | 
constexpr and noexcept for operators for bitmask types | 
Yes | 
3 | 
 | 
| 3092(i) | 
Open | 
16.3.3.3.3 [bitmask.types] | 
Unclear semantics of enum class bitmask types | 
Yes | 
3 | 
 | 
| 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-like std::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 | 
 | 
| 4317(i) | 
Tentatively Ready | 
16.4.4.2 [utility.arg.requirements] | 
The meaning of "resource" in the Cpp17Destructible requirements is undefined | 
Yes | 
 | 
 | 
| 2146(i) | 
Open | 
16.4.4.2 [utility.arg.requirements] | 
Are reference types CopyConstructible/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 of max_size() for an allocator | 
Yes | 
3 | 
 | 
| 3267(i) | 
New | 
16.4.4.6 [allocator.requirements] | 
Rebound allocators and is_always_equal | 
Yes | 
4 | 
 | 
| 3157(i) | 
New | 
16.4.4.6 [allocator.requirements] | 
Allocator destroy and fancy pointer operations must be non-throwing | 
Yes | 
3 | 
 | 
| 2461(i) | 
New | 
16.4.4.6 [allocator.requirements] | 
Interaction between allocators and container exception safety guarantees | 
No | 
3 | 
 | 
| 4258(i) | 
New | 
16.4.4.6.1 [allocator.requirements.general] | 
Size type mismatch in constraints involving Cpp17Allocator | 
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] | 
A Cpp17Allocator type can't silently ignore an unsupported alignment | 
No | 
3 | 
 | 
| 4047(i) | 
New | 
16.4.5.2.1 [namespace.std] | 
Explicitly specifying template arguments for std::swap should not be supported | 
No | 
4 | 
 | 
| 3926(i) | 
New | 
16.4.5.2.1 [namespace.std] | 
Which namespace std is the mentioned one? | 
Yes | 
4 | 
 | 
| 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 | 
 | 
| 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 and Constraints 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 of final? | 
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 of NULL 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 | 
 | 
| 4286(i) | 
Tentatively Ready | 
17.3.2 [version.syn] | 
Some more feature-test macros for fully freestanding features are not marked freestanding | 
Yes | 
 | 
 | 
| 4411(i) | 
New | 
17.3.2 [version.syn] | 
Even more feature-test macros for fully freestanding features are not marked freestanding | 
No | 
2 | 
 | 
| 3931(i) | 
New | 
17.3.2 [version.syn] | 
Too many paper bump __cpp_lib_ranges | 
Yes | 
3 | 
 | 
| 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 whether numeric_limits can be specialized by users | 
Yes | 
3 | 
 | 
| 3923(i) | 
New | 
17.3.5.1 [numeric.limits.general] | 
The specification of numeric_limits doesn't clearly distinguish between implementation requirements
and user requirements | 
Yes | 
3 | 
 | 
| 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 of std::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 for std::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 for source_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 | 
 | 
| 4305(i) | 
Tentatively Ready | 
17.12.7 [compare.type] | 
Missing user requirements on type_order template | 
Yes | 
 | 
 | 
| 3653(i) | 
New | 
17.13.2 [coroutine.syn] | 
<coroutine> is freestanding, but uses std::hash which is not | 
No | 
3 | 
 | 
| 4388(i) | 
New | 
17.14.2 [cstdarg.syn] | 
Align new definition of va_start with C23 | 
Yes | 
1 | 
 | 
| 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] | 
Parallel std::ranges::destroy should allow exceptions | 
Yes | 
 | 
 | 
| 3454(i) | 
Open | 
20.2.3 [pointer.traits] | 
pointer_traits::pointer_to should be constexpr | 
Yes | 
4 | 
 | 
| 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] | 
Missing Mandates clauses on is_sufficiently_aligned | 
Yes | 
2 | 
 | 
| 2421(i) | 
New | 
20.2.5 [ptr.align] | 
Non-specification of handling zero size in std::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 of std::bit_cast | 
Yes | 
3 | 
 | 
| 4282(i) | 
New | 
20.2.6 [obj.lifetime] | 
Imprecise Throws: clause in std::relocate | 
Yes | 
2 | 
 | 
| 4312(i) | 
Tentatively Ready | 
20.2.8.2 [allocator.uses.construction] | 
Const and value category mismatch for allocator_arg_t/allocator_arg in the description 
of uses-allocator construction | 
Yes | 
 | 
 | 
| 3192(i) | 
New | 
20.2.8.2 [allocator.uses.construction] | 
§[allocator.uses.construction] functions misbehave for const types | 
Yes | 
3 | 
 | 
| 3665(i) | 
New | 
20.2.9.2 [allocator.traits.types] | 
Is std::allocator_traits<Alloc>::rebind_alloc SFINAE-friendly? | 
No | 
3 | 
 | 
| 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 | 
 | 
| 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 for unique_ptr<T>::get_deleter()(p) to be able to destroy the unique_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's operator* is missing a mandate | 
Yes | 
3 | 
 | 
| 2594(i) | 
New | 
20.3.2.2 [util.smartptr.shared] | 
Contradicting definition of empty shared_ptr on shared_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 of std::shared_ptr | 
Yes | 
4 | 
 | 
| 2906(i) | 
New | 
20.3.2.2.2 [util.smartptr.shared.const] | 
There is no ability to supply an allocator for the control block when constructing a shared_ptr from a 
unique_ptr | 
No | 
3 | 
 | 
| 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 | 
 | 
| 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 | 
 | 
| 4322(i) | 
New | 
20.4 [mem.composite.types] | 
Problematic Constraints on incomplete types in indirect and polymorphic | 
Yes | 
2 | 
 | 
| 4250(i) | 
LEWG | 
20.4.1.7 [indirect.swap] | 
swap overloads for indirect and polymorphic only found by ADL | 
Yes | 
2 | 
 | 
| 4325(i) | 
New | 
20.4.1.8 [indirect.relops] | 
std::indirect's operator== still does not support incomplete types | 
Yes | 
2 | 
 | 
| 3681(i) | 
New | 
20.5.1 [mem.res.syn] | 
Further considerations on LWG 3679 (using pmr::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] | 
Can std::pmr::polymorphic_allocator::construct just call std::uninitialized_construct_using_allocator? | 
Yes | 
3 | 
 | 
| 3634(i) | 
New | 
20.5.4 [mem.res.global] | 
When are static-duration memory_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 and aligned_storage do not meet the definition 
of TransformationTrait | 
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 for std::is_nothrow_* traits may be ambiguous in some cases involving noexcept(false) | 
Yes | 
3 | 
 | 
| 3929(i) | 
New | 
21.3.6.4 [meta.unary.prop] | 
Preconditions for type traits should be Mandates | 
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 of reference_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 of is_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 the return statement | 
Yes | 
2 | 
 | 
| 3400(i) | 
New | 
21.3.8 [meta.rel] | 
Does is_nothrow_convertible consider destruction of the destination type? | 
No | 
3 | 
 | 
| 3174(i) | 
New | 
21.3.8 [meta.rel] | 
Precondition on is_convertible is too strong | 
Yes | 
3 | 
 | 
| 3205(i) | 
New | 
21.3.9.7 [meta.trans.other] | 
decay_t in the new common_type fallback should be remove_cvref_t | 
Yes | 
3 | 
 | 
| 4138(i) | 
New | 
21.3.12 [meta.const.eval] | 
is_within_lifetime should mandate is_object | 
Yes | 
3 | 
 | 
| 4416(i) | 
Tentatively Ready | 
21.4.1 [meta.syn] | 
<meta> should include <compare> | 
Yes | 
 | 
 | 
| 4435(i) | 
New | 
21.4.6 [meta.reflection.names] | 
meta::has_identifier doesn't handle all types | 
Yes | 
2 | 
 | 
| 4433(i) | 
New | 
21.4.7 [meta.reflection.queries] | 
Incorrect query for C language linkage | 
Yes | 
 | 
 | 
| 4427(i) | 
New | 
21.4.7 [meta.reflection.queries] | 
meta::dealias needs to work with things that aren't entities | 
Yes | 
 | 
 | 
| 4422(i) | 
Tentatively Ready | 
21.4.8 [meta.reflection.access.context] | 
meta::access_context should be a consteval-only type | 
Yes | 
2 | 
 | 
| 4428(i) | 
New | 
21.4.9 [meta.reflection.access.queries] | 
Metafunctions should not be defined in terms of constant subexpressions | 
Yes | 
 | 
 | 
| 4434(i) | 
New | 
21.4.9 [meta.reflection.access.queries] | 
meta::is_accessible does not need to consider incomplete D | 
Yes | 
 | 
 | 
| 4429(i) | 
New | 
21.4.11 [meta.reflection.layout] | 
meta::alignment_of should exclude data member description of bit-field | 
Yes | 
 | 
 | 
| 4298(i) | 
New | 
21.4.12 [meta.reflection.extract] | 
§[meta.reflection.extract] Malformed "F noexcept" type | 
Yes | 
3 | 
 | 
| 4316(i) | 
New | 
21.4.13 [meta.reflection.substitute] | 
{can_}substitute specification is ill-formed | 
Yes | 
1 | 
 | 
| 4426(i) | 
Tentatively Ready | 
21.4.15 [meta.reflection.array] | 
Clarify what meta::reflect_constant_string considers a string literal | 
Yes | 
 | 
 | 
| 4432(i) | 
New | 
21.4.15 [meta.reflection.array] | 
Clarify element initialization for meta::reflect_constant_array | 
Yes | 
 | 
 | 
| 4424(i) | 
New | 
21.4.16 [meta.reflection.define.aggregate] | 
meta::define_aggregate should require a class type | 
Yes | 
1 | 
 | 
  | Issue | 
  Status | 
  Section | 
  Title | 
  Proposed Resolution | 
  Priority | 
  Duplicates | 
| 2153(i) | 
LEWG | 
22.2.2 [utility.swap] | 
Narrowing of the non-member swap contract | 
No | 
2 | 
 | 
| 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 | 
 | 
| 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 | 
 | 
| 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 as Value: | 
No | 
3 | 
 | 
| 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 | 
 | 
| 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 of pair in tuple's allocator_arg_t constructors | 
Yes | 
3 | 
 | 
| 3583(i) | 
New | 
22.4.4.2 [tuple.cnstr] | 
Clarify if/when short circuiting applies to conditions in Constraints: elements | 
No | 
3 | 
 | 
| 2528(i) | 
New | 
22.4.4.2 [tuple.cnstr] | 
Order of std::tuple construction unspecified | 
No | 
3 | 
 | 
| 4040(i) | 
New | 
22.4.7 [tuple.helper] | 
Contradictory specification of std::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 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 | 
 | 
| 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 for optional/variant/any | 
Yes | 
3 | 
 | 
| 2746(i) | 
New | 
22.5.3.4 [optional.assign] | 
Inconsistency between requirements for emplace between optional and variant | 
Yes | 
3 | 
 | 
| 4281(i) | 
New | 
22.5.3.7 [optional.observe] | 
Inconsistency between value_or() and error_or() in std::expected | 
No | 
3 | 
 | 
| 4406(i) | 
New | 
22.5.3.7 [optional.observe] | 
optional::value_or return statement is inconsistent with Mandates | 
Yes | 
3 | 
 | 
| 3424(i) | 
New | 
22.5.3.7 [optional.observe] | 
optional::value_or should never return a cv-qualified type | 
Yes | 
3 | 
 | 
| 2829(i) | 
Open | 
22.5.3.7 [optional.observe] | 
LWG 2740 leaves behind vacuous words | 
No | 
2 | 
 | 
| 4015(i) | 
Open | 
22.5.3.8 [optional.monadic] | 
LWG 3973 broke const overloads of std::optional monadic operations | 
Yes | 
1 | 
 | 
| 4300(i) | 
Tentatively Ready | 
22.5.4.3 [optional.ref.assign] | 
Missing Returns: element in optional<T&>::emplace | 
Yes | 
 | 
 | 
| 4308(i) | 
New | 
22.5.4.5 [optional.ref.iterators] | 
std::optional<T&>::iterator can't be a contiguous iterator for some T | 
Yes | 
1 | 
 | 
| 4304(i) | 
New | 
22.5.4.6 [optional.ref.observe] | 
std::optional<NonReturnable&> is ill-formed due to value_or | 
Yes | 
1 | 
 | 
| 4299(i) | 
Tentatively Ready | 
22.5.4.7 [optional.ref.monadic] | 
Missing Mandates: part in optional<T&>::transform | 
Yes | 
 | 
 | 
| 4367(i) | 
New | 
22.5.4.7 [optional.ref.monadic] | 
Improve optional<T&>::or_else | 
Yes | 
4 | 
 | 
| 3613(i) | 
New | 
22.5.5 [optional.nullopt] | 
Specify that nullopt_t is copyable | 
Yes | 
3 | 
 | 
| 4370(i) | 
Tentatively Ready | 
22.5.9 [optional.comp.with.t] | 
Comparison of optional<T> to T may be ill-formed | 
Yes | 
 | 
 | 
| 3627(i) | 
Tentatively Ready | 
22.5.10 [optional.specalg] | 
Inconsistent specifications for std::make_optional overloads | 
Yes | 
3 | 
 | 
| 2881(i) | 
New | 
22.6.3 [variant.variant] | 
Adopt section III of P0308R0 | 
No | 
3 | 
 | 
| 2991(i) | 
Tentatively Ready | 
22.6.3.2 [variant.ctor] | 
variant copy constructor missing noexcept(see below) | 
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 | 
 | 
| 3991(i) | 
New | 
22.6.3.4 [variant.assign] | 
variant's move assignment should not be guaranteed to produce a valueless by exception state | 
Yes | 
3 | 
 | 
| 3069(i) | 
New | 
22.6.3.4 [variant.assign] | 
Move assigning variant's subobject corrupts data | 
Yes | 
3 | 
 | 
| 4197(i) | 
New | 
22.6.7 [variant.visit] | 
Complexity of std::visit with immediate functions | 
Yes | 
2 | 
 | 
| 3416(i) | 
New | 
22.7.4 [any.class] | 
The Throws: specification of std::any does not mention allocation | 
No | 
3 | 
 | 
| 3423(i) | 
New | 
22.7.5 [any.nonmembers] | 
std::any_cast should never return a cv-qualified type | 
Yes | 
3 | 
 | 
| 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 | 
 | 
| 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 of std::expected should propagate triviality | 
Yes | 
2 | 
 | 
| 4366(i) | 
Tentatively Ready | 
22.8.6.8 [expected.object.eq] | 
Heterogeneous comparison of expected may be ill-formed | 
Yes | 
 | 
 | 
| 4187(i) | 
New | 
22.9.2 [template.bitset] | 
bitset::reference should be const-assignable | 
Yes | 
3 | 
 | 
| 2348(i) | 
Open | 
22.9.2 [template.bitset] | 
charT('1') is not the wide equivalent of '1' | 
Yes | 
3 | 
 | 
| 4294(i) | 
Tentatively Ready | 
22.9.2.2 [bitset.cons] | 
bitset(const CharT*) constructor needs to be constrained | 
Yes | 
 | 
 | 
| 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()> suppresses nodiscard 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 a volatile-qualified perfect forwarding call wrapper | 
Yes | 
3 | 
 | 
| 3046(i) | 
New | 
22.10.6 [refwrap] | 
Do not require reference_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 reject std::bind_front<42>() and its friends? | 
Yes | 
4 | 
 | 
| 4264(i) | 
New | 
22.10.17.1 [func.wrap.general] | 
Skipping indirection is not allowed for function_ref | 
Yes | 
2 | 
 | 
| 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 | 
 | 
| 4255(i) | 
Tentatively Ready | 
22.10.17.4.3 [func.wrap.move.ctor] | 
move_only_function constructor should recognize empty copyable_functions | 
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 | 
 | 
| 4373(i) | 
New | 
22.10.17.6.2 [func.wrap.ref.class] | 
function_ref should provide result_type | 
Yes | 
3 | 
 | 
| 4256(i) | 
Tentatively Ready | 
22.10.17.6.3 [func.wrap.ref.ctor] | 
Incorrect constrains for function_ref constructors from nontype_t | 
Yes | 
 | 
 | 
| 4425(i) | 
Tentatively Ready | 
22.10.17.6.5 [func.wrap.ref.deduct] | 
CTAD function_ref of data member pointer should produce noexcept signature | 
Yes | 
 | 
 | 
| 4127(i) | 
New | 
22.10.18.3 [func.search.bm] | 
The Standard Library should not use predicates of the form pred(*i) != false | 
Yes | 
3 | 
 | 
| 4365(i) | 
LEWG | 
22.10.18.3 [func.search.bm] | 
boyer_moore_searcher and boyer_moore_horspool_searcher should be constexpr-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 use explicit 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 containers a.assign(n, t) | 
Yes | 
3 | 
 | 
| 2206(i) | 
Open | 
23.2.4 [sequence.reqmts] | 
Inaccuracy in initializer_list constructor requirements | 
Yes | 
3 | 
 | 
| 4396(i) | 
LEWG | 
23.2.4 [sequence.reqmts] | 
Improve inplace_vector(from_range_t, R&& rg) | 
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] missing multiset/map cases | 
No | 
3 | 
 | 
| 3227(i) | 
New | 
23.2.7 [associative.reqmts] | 
Ambiguity issue for extract in ordered and unordered associative containers | 
Yes | 
3 | 
 | 
| 2362(i) | 
New | 
23.2.7 [associative.reqmts] | 
unique, associative emplace() should not move/copy the mapped_type constructor 
arguments when no insertion happens | 
No | 
3 | 
 | 
| 2844(i) | 
Open | 
23.2.7 [associative.reqmts] | 
Stability of a_uniq.insert(i, j) | 
No | 
3 | 
 | 
| 2227(i) | 
Open | 
23.2.7 [associative.reqmts] | 
Stateful comparison objects in associative containers | 
No | 
3 | 
 | 
| 2215(i) | 
Open | 
23.2.7 [associative.reqmts] | 
(unordered) associative container functors should be CopyConstructible | 
Yes | 
3 | 
 | 
| 4132(i) | 
New | 
23.2.7.1 [associative.reqmts.general] | 
Throws specifications need to include boolean-testable operations | 
Yes | 
3 | 
 | 
| 3577(i) | 
New | 
23.2.7.1 [associative.reqmts.general] | 
Merging an (unordered) associative container with itself | 
No | 
3 | 
 | 
| 3691(i) | 
New | 
23.2.7.1 [associative.reqmts.general] | 
Replacement of keys in associative containers | 
Yes | 
3 | 
 | 
| 4046(i) | 
New | 
23.2.7.2 [associative.reqmts.except] | 
Effects of inserting into or erasing from flat container adaptors when an exception is thrown need to be more permissive | 
No | 
2 | 
 | 
| 1175(i) | 
Open | 
23.2.8 [unord.req] | 
unordered complexity | 
Yes | 
3 | 
 | 
| 2198(i) | 
Open | 
23.2.8 [unord.req] | 
max_load_factor(z) makes no strong guarantees, but bans useful behavior | 
Yes | 
3 | 
 | 
| 2189(i) | 
Open | 
23.2.8.2 [unord.req.except] | 
Throwing swap 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] | 
Is array<const int, 0> swappable or not? | 
Yes | 
3 | 
 | 
| 4276(i) | 
Tentatively Ready | 
23.3.3.5 [array.zero] | 
front() and back() are not hardened for zero-length std::arrays | 
Yes | 
 | 
 | 
| 2157(i) | 
Open | 
23.3.3.5 [array.zero] | 
How does std::array<T,0> initialization work when T is not default-constructible? | 
Yes | 
3 | 
 | 
| 4225(i) | 
New | 
23.3.5.3 [deque.capacity] | 
What should happen when an exception is thrown on resizing std::deque, std::forward_list, or std::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 and deque iterator erase 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() needs Throws: element adjusted to match block min/max considerations | 
Yes | 
3 | 
 | 
| 4380(i) | 
New | 
23.3.9.3 [hive.capacity] | 
hive::reserve() complexity does not reflect potential deallocation of blocks
 | 
Yes | 
3 | 
 | 
| 4323(i) | 
New | 
23.3.9.5 [hive.operations] | 
hive::unique time complexity should incorporate potential block removal complexity | 
Yes | 
3 | 
 | 
| 4318(i) | 
Tentatively Ready | 
23.3.9.6 [hive.erasure] | 
Have hive::erase_if reevaluate end() to avoid UB | 
Yes | 
 | 
 | 
| 3758(i) | 
New | 
23.3.13.3 [vector.capacity] | 
Element-relocating operations of std::vector and std::deque 
should conditionally require Cpp17CopyInsertable in their preconditions | 
No | 
3 | 
 | 
| 2158(i) | 
Open | 
23.3.13.3 [vector.capacity] | 
Conditional copy/move in std::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 ranges remove | 
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] | 
Does vector<bool, Allocator> mandate that Allocator::value_type is bool? | 
No | 
 | 
 | 
| 4122(i) | 
New | 
23.3.16.1 [inplace.vector.overview] | 
Ill-formed operator<=> can cause hard error when instantiating std::inplace_vector | 
Yes | 
2 | 
 | 
| 4151(i) | 
New | 
23.3.16.5 [inplace.vector.modifiers] | 
Precondition of inplace_vector::swap | 
Yes | 
2 | 
 | 
| 4223(i) | 
New | 
23.4.1 [associative.general] | 
Deduction guides for maps are mishandling tuples and references | 
Yes | 
2 | 
 | 
| 4291(i) | 
Tentatively Ready | 
23.4.3.1 [map.overview] | 
 explicit map(const Allocator&) should be constexpr  | 
Yes | 
 | 
 | 
| 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 | 
 | 
| 4292(i) | 
Tentatively Ready | 
23.5.3.1 [unord.map.overview] | 
Unordered container local iterators should be constexpr iterators | 
Yes | 
 | 
 | 
| 4398(i) | 
Tentatively Ready | 
23.6.2 [queue.syn] | 
enable_nonlocking_formatter_optimization should be disabled for container adaptors | 
Yes | 
2 | 
 | 
| 4371(i) | 
Tentatively NAD | 
23.6.3.1 [queue.defn] | 
Container adaptor's empty/size should be noexcept | 
Yes | 
 | 
 | 
| 3189(i) | 
New | 
23.6.4 [priority.queue] | 
Missing requirement for std::priority_queue | 
No | 
3 | 
 | 
| 3161(i) | 
Open | 
23.6.6 [stack] | 
Container adapters mandate use of emplace_back but don't require it | 
Yes | 
3 | 
 | 
| 3959(i) | 
New | 
23.6.8 [flat.map] | 
Should the comparator of std::flat_map/std::flat_multimap be copied twice in some operations? | 
No | 
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 use insert_range when available? | 
No | 
2 | 
 | 
| 3966(i) | 
New | 
23.6.8.1 [flat.map.overview] | 
The value_type and reference members of std::flat_(multi)map::(const_)iterator are unclear | 
No | 
3 | 
 | 
| 3963(i) | 
New | 
23.6.8.2 [flat.map.defn] | 
Different std::flat_map/std::flat_multimap specializations should be able to share same nested classes | 
Yes | 
3 | 
 | 
| 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's Effects 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 of std::flat_map/std::flat_set | 
Yes | 
2 | 
 | 
| 4384(i) | 
Tentatively Ready | 
23.6.11.2 [flat.set.defn] | 
flat_set::erase(iterator) is underconstrained
 | 
Yes | 
 | 
 | 
| 4180(i) | 
New | 
23.6.12.5 [flat.multiset.modifiers] | 
Inconsistent constraints on flat_foo::emplace | 
Yes | 
3 | 
 | 
| 4351(i) | 
Tentatively Ready | 
23.7.2.1 [span.syn] | 
integral-constant-like needs more remove_cvref_t | 
Yes | 
 | 
 | 
| 3813(i) | 
New | 
23.7.2.2.1 [span.overview] | 
std::span<volatile T, E> is made ill-formed by P2278R4 when T is a normal class type | 
Yes | 
2 | 
 | 
| 4397(i) | 
New | 
23.7.2.2.2 [span.cons] | 
Improve span(R&& r) | 
Yes | 
3 | 
 | 
| 4404(i) | 
Tentatively NAD | 
23.7.2.2.3 [span.deduct] | 
Should span(R&&) CTAD apply P2280? | 
Yes | 
 | 
 | 
| 4293(i) | 
Tentatively Ready | 
23.7.2.2.4 [span.sub] | 
span::subspan/first/last chooses wrong constructor when T is const-qualified bool | 
Yes | 
 | 
 | 
| 3995(i) | 
New | 
23.7.3 [views.multidim] | 
Issue with custom index conversion in <mdspan> | 
No | 
3 | 
 | 
| 4275(i) | 
Tentatively Ready | 
23.7.3.2 [mdspan.syn] | 
std::dynamic_extent should also be defined in <mdspan> | 
Yes | 
3 | 
 | 
| 4020(i) | 
Tentatively Ready | 
23.7.3.3.2 [mdspan.extents.expo] | 
extents::index-cast weirdness | 
Yes | 
 | 
 | 
| 4314(i) | 
New | 
23.7.3.4 [mdspan.layout] | 
Missing move in mdspan layout mapping::operator() | 
Yes | 
2 | 
 | 
| 4272(i) | 
New | 
23.7.3.4 [mdspan.layout] | 
For rank == 0, layout_stride is atypically convertible | 
Yes | 
2 | 
 | 
| 4266(i) | 
Tentatively Ready | 
23.7.3.4.7 [mdspan.layout.stride] | 
layout_stride::mapping should treat empty mappings as exhaustive | 
Yes | 
 | 
 | 
| 4372(i) | 
Tentatively Ready | 
23.7.3.4.8.1 [mdspan.layout.leftpad.overview] | 
Weaken Mandates: for dynamic padding values in padded layouts | 
Yes | 
 | 
 | 
| 4021(i) | 
New | 
23.7.3.6.1 [mdspan.mdspan.overview] | 
mdspan::is_always_meow() should be noexcept | 
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 of indirectly_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) runtime
complexity 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 of  incrementable_traits is under-constrained | 
Yes | 
3 | 
 | 
| 3615(i) | 
New | 
24.3.2.1 [incrementable.traits] | 
The last specialization of incrementable_traits has wrong operand types | 
Yes | 
3 | 
 | 
| 3287(i) | 
New | 
24.3.2.3 [iterator.traits] | 
Exposition-only cpp17-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 model InputIterator | 
Yes | 
2 | 
 | 
| 484(i) | 
Open | 
24.3.5.3 [input.iterators] | 
Convertible to T | 
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 for incrementable iterator | 
No | 
3 | 
 | 
| 4171(i) | 
Tentatively NAD | 
24.3.6.3 [indirectcallable.indirectinvocable] | 
P2609R3 breaks code that uses views::zip and get<T> | 
No | 
 | 
 | 
| 4270(i) | 
New | 
24.3.6.4 [projected] | 
Diagnose misuse of std::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 require BidirectionalIterator | 
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) and prev(i, most-negative) | 
Yes | 
3 | 
 | 
| 2931(i) | 
Open | 
24.4.3 [iterator.operations] | 
Missed optimization opportunity with single-argument std::next | 
No | 
3 | 
 | 
| 4303(i) | 
New | 
24.4.4.3 [range.iter.op.distance] | 
std::decay_t in the specification of ranges::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 of std::reverse_iterator with containers should not require manually including <iterator> | 
Yes | 
3 | 
 | 
| 2595(i) | 
New | 
24.5.1.2 [reverse.iterator] | 
reverse_iterator::operator[]'s return type revisited | 
Yes | 
3 | 
 | 
| 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 use prev for non-pointer iterators | 
Yes | 
3 | 
 | 
| 4104(i) | 
New | 
24.5.3 [const.iterators] | 
basic_const_iterator<volatile int*> is not a contiguous_iterator | 
No | 
4 | 
 | 
| 3986(i) | 
New | 
24.5.3 [const.iterators] | 
basic_const_iterator doesn't work with optional | 
No | 
3 | 
 | 
| 3988(i) | 
Open | 
24.5.3 [const.iterators] | 
Should as_const_view and basic_const_iterator provide base()? | 
Yes | 
3 | 
 | 
| 3863(i) | 
New | 
24.5.3.2 [const.iterators.alias] | 
Is input_iterator guaranteed to have iter_const_reference_t? | 
No | 
2 | 
 | 
| 4253(i) | 
Tentatively Ready | 
24.5.3.3 [const.iterators.iterator] | 
basic_const_iterator should provide iterator_type | 
Yes | 
 | 
 | 
| 4237(i) | 
New | 
24.5.3.3 [const.iterators.iterator] | 
The standard library iterator adaptor does not handle iterator_category correctly | 
No | 
3 | 
 | 
| 4218(i) | 
New | 
24.5.3.5 [const.iterators.ops] | 
Constraint recursion in basic_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 provide iterator_category only when it models
forward_iterator | 
Yes | 
3 | 
 | 
| 4115(i) | 
New | 
24.5.4.6 [move.iter.elem] | 
move_iterator::operator* should have conditional noexcept specification | 
Yes | 
4 | 
 | 
| 4092(i) | 
New | 
24.5.5.1 [common.iterator] | 
The monotonic version of common_iterator::operator== is underconstrained | 
Yes | 
3 | 
 | 
| 3783(i) | 
New | 
24.5.5.1 [common.iterator] | 
views::common may not be a range adaptor object | 
Yes | 
3 | 
 | 
| 3748(i) | 
New | 
24.5.5.6 [common.iter.cmp] | 
common_iterator and counted_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 public exposition-only member | 
Yes | 
4 | 
 | 
| 3188(i) | 
New | 
24.6.4 [istreambuf.iterator] | 
istreambuf_iterator::pointer should not be unspecified | 
Yes | 
3 | 
 | 
| 3108(i) | 
New | 
24.6.4.2 [istreambuf.iterator.proxy] | 
istreambuf_iterator::proxy::operator* should be const | 
Yes | 
3 | 
 | 
| 4385(i) | 
New | 
24.7 [iterator.range] | 
Including <simd> doesn't provide std::begin/end
 | 
Yes | 
3 | 
 | 
| 3537(i) | 
New | 
24.7 [iterator.range] | 
§[iterator.range] Missing noexcept for std::rbegin/rend for arrays and 
initializer_list | 
No | 
3 | 
 | 
| 4181(i) | 
New | 
24.7 [iterator.range] | 
Some ranges have negative ssize | 
No | 
3 | 
 | 
| 4131(i) | 
New | 
24.7 [iterator.range] | 
Including <optional> doesn't provide std::begin/end | 
Yes | 
3 | 
 | 
| 4387(i) | 
Open | 
24.7 [iterator.range] | 
Including <stacktrace> doesn't provide std::begin/end
 | 
Yes | 
3 | 
 | 
  | Issue | 
  Status | 
  Section | 
  Title | 
  Proposed Resolution | 
  Priority | 
  Duplicates | 
| 4307(i) | 
New | 
25.2 [ranges.syn] | 
Make good use of sized-random-access-range and bidirectional-common
in <ranges> | 
Yes | 
4 | 
 | 
| 3729(i) | 
New | 
25.2 [ranges.syn] | 
std::tuple_element_t<std::ranges::subrange<I, S, K>> should remove top-level cv-qualifiers | 
Yes | 
4 | 
 | 
| 4184(i) | 
Tentatively NAD | 
25.3 [range.access] | 
Domain of ranges::cmeow doesn't match ranges::meow | 
No | 
 | 
 | 
| 4062(i) | 
New | 
25.3.13 [range.prim.empty] | 
ranges::empty has no semantic requirements for forward_ranges | 
No | 
3 | 
 | 
| 4389(i) | 
SG9 | 
25.4.2 [range.range] | 
ranges::for_each possibly behaves differently from range-based for | 
Yes | 
2 | 
 | 
| 3982(i) | 
Tentatively NAD | 
25.4.5 [range.view] | 
is-derived-from-view-interface should require that T is derived from view_interface<T> | 
Yes | 
 | 
 | 
| 3896(i) | 
New | 
25.4.6 [range.refinements] | 
The definition of viewable_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 provide data() | 
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 via c.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 when sized_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::to reserves 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 if range_value_t<C> 
is a non-move-constructible range | 
Yes | 
3 | 
 | 
| 4018(i) | 
New | 
25.5.7.2 [range.utility.conv.to] | 
ranges::to's copy branch is underconstrained | 
Yes | 
3 | 
 | 
| 3845(i) | 
New | 
25.5.7.2 [range.utility.conv.to] | 
ranges::to's from_range_t tag branch has the wrong constraint | 
Yes | 
4 | 
 | 
| 3985(i) | 
New | 
25.5.7.2 [range.utility.conv.to] | 
ranges::to should Mandates C not to be view | 
Yes | 
3 | 
 | 
| 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 of iota_view::iterator::iterator_concept should be improved | 
Yes | 
3 | 
 | 
| 3846(i) | 
New | 
25.6.4.3 [range.iota.iterator] | 
iota_view::iterator::operator- is overconstrained | 
Yes | 
3 | 
 | 
| 3609(i) | 
New | 
25.6.4.4 [range.iota.sentinel] | 
std::ranges::iota_view<int, long> has non-subtractable iterator and 
sentinel types | 
Yes | 
3 | 
 | 
| 3955(i) | 
New | 
25.6.5.2 [range.repeat.view] | 
Add noexcept to several repeat_view[::iterator] member functions | 
Yes | 
3 | 
 | 
| 3763(i) | 
New | 
25.6.5.3 [range.repeat.iterator] | 
Should range adaptor iterators only provide iterator_category when its 
difference_type is not an integer-class type? | 
Yes | 
3 | 
 | 
| 3679(i) | 
LEWG | 
25.6.6 [range.istream] | 
Is <ranges> sufficient for istream_view? | 
No | 
3 | 
 | 
| 3489(i) | 
New | 
25.6.6.3 [range.istream.iterator] | 
Improve istream_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 to std::bind_back(adaptor, args...)(r) | 
No | 
4 | 
 | 
| 4099(i) | 
New | 
25.7.7.1 [range.as.rvalue.overview] | 
The simple case of views::as_rvalue and views::common are not strictly correct | 
Yes | 
4 | 
 | 
| 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] | 
Should views::iota(0) | views::take(5) be views::iota(0, 5)? | 
Yes | 
 | 
 | 
| 4214(i) | 
New | 
25.7.10.1 [range.take.overview] | 
Missing Preconditions for take/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 be sized_range when applied to ranges of simd::vec | 
Yes | 
3 | 
 | 
| 3873(i) | 
New | 
25.7.15.2 [range.join.with.view] | 
join_with_view's const begin is underconstrained | 
No | 
3 | 
 | 
| 4059(i) | 
New | 
25.7.15.3 [range.join.with.iterator] | 
Leaky abstraction in join_with_view's iterator | 
Yes | 
3 | 
 | 
| 3852(i) | 
New | 
25.7.15.3 [range.join.with.iterator] | 
join_with_view::iterator's iter_move and iter_swap should be conditionally noexcept | 
Yes | 
3 | 
 | 
| 3972(i) | 
New | 
25.7.15.3 [range.join.with.iterator] | 
Issues with join_with_view::iterator's iter_swap | 
No | 
2 | 
 | 
| 3855(i) | 
New | 
25.7.16.2 [range.lazy.split.view] | 
tiny-range is not quite right | 
Yes | 
4 | 
 | 
| 3685(i) | 
New | 
25.7.16.2 [range.lazy.split.view] | 
In lazy_split_view, CTAD doesn't work when given an input_range input and a tiny-range pattern | 
Yes | 
3 | 
 | 
| 3599(i) | 
New | 
25.7.16.2 [range.lazy.split.view] | 
The const overload of lazy_split_view::begin should be constrained by const Pattern | 
Yes | 
3 | 
 | 
| 4108(i) | 
SG9 | 
25.7.16.2 [range.lazy.split.view] | 
lazy_split_view should be sized_range when pattern is empty tiny-range | 
Yes | 
4 | 
 | 
| 4249(i) | 
New | 
25.7.16.3 [range.lazy.split.outer] | 
The past end issue for lazy_split_view | 
Yes | 
2 | 
 | 
| 3686(i) | 
New | 
25.7.16.3 [range.lazy.split.outer] | 
In lazy_split_view, comparing a default-constructed outer-iterator or 
inner-iterator with std::default_sentinel results in null pointer dereference | 
Yes | 
3 | 
 | 
| 4017(i) | 
New | 
25.7.17.3 [range.split.iterator] | 
Behavior of std::views::split on an empty range | 
Yes | 
3 | 
 | 
| 4166(i) | 
Tentatively Ready | 
25.7.18.2 [range.concat.view] | 
concat_view::end() should be more constrained in order to support noncopyable iterators | 
Yes | 
 | 
 | 
| 4073(i) | 
New | 
25.7.18.2 [range.concat.view] | 
concat_view::size may overflow | 
No | 
4 | 
 | 
| 4091(i) | 
New | 
25.7.18.2 [range.concat.view] | 
concat_view rejects non-movable references | 
Yes | 
4 | 
 | 
| 4081(i) | 
New | 
25.7.18.3 [range.concat.iterator] | 
concat_view::iterator::operator- is overconstrained | 
Yes | 
3 | 
 | 
| 4089(i) | 
New | 
25.7.18.3 [range.concat.iterator] | 
concat_view::iterator's iter_swap is overconstrained | 
Yes | 
3 | 
 | 
| 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 when ranges::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 conditional noexcept specification | 
Yes | 
3 | 
 | 
| 3832(i) | 
New | 
25.7.23.3 [range.elements.iterator] | 
Missing change for element_view::iterator in LWG 3798 | 
Yes | 
3 | 
 | 
| 3908(i) | 
Tentatively NAD | 
25.7.24.3 [range.enumerate.iterator] | 
enumerate_view::iterator constructor is explicit | 
Yes | 
 | 
 | 
| 4116(i) | 
New | 
25.7.24.3 [range.enumerate.iterator] | 
enumerate_view::iterator and cartesian_product_view::iterator should not
    always provide iterator_category | 
Yes | 
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 and adjacent_view are underconstrained | 
Yes | 
3 | 
 | 
| 4006(i) | 
Tentatively NAD | 
25.7.29.4 [range.chunk.outer.value] | 
chunk_view::outer-iterator::value_type should provide empty | 
Yes | 
 | 
 | 
| 4254(i) | 
New | 
25.7.32.3 [range.stride.iterator] | 
stride_view::iterator should provide operator-> | 
Yes | 
3 | 
 | 
| 3777(i) | 
Open | 
25.7.33.2 [range.cartesian.view] | 
Common cartesian_product_view produces an invalid range if the first range is input and one of the ranges is empty | 
Yes | 
2 | 
 | 
| 4210(i) | 
New | 
25.7.34.3 [range.cache.latest.iterator] | 
Issue with cache_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 its const 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's operator* is not noexcept when it can be | 
Yes | 
3 | 
 | 
| 4117(i) | 
New | 
25.8.6 [coro.generator.iterator] | 
generator::iterator should provide iterator_concept | 
Yes | 
4 | 
 | 
  | Issue | 
  Status | 
  Section | 
  Title | 
  Proposed Resolution | 
  Priority | 
  Duplicates | 
| 2963(i) | 
New | 
26 [algorithms] | 
Algorithms with underspecified iterator requirements | 
No | 
3 | 
 | 
| 1238(i) | 
Open | 
26 [algorithms] | 
Defining algorithms taking iterator for range | 
No | 
3 | 
 | 
| 2173(i) | 
Open | 
26 [algorithms] | 
The meaning of operator + in the description of the algorithms | 
Yes | 
4 | 
 | 
| 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 | 
 | 
| 4297(i) | 
Tentatively Ready | 
26.4 [algorithm.syn] | 
Missing permutable constraint for iterator overloads in Parallel Range Algorithms | 
Yes | 
 | 
 | 
| 4095(i) | 
Tentatively NAD | 
26.4 [algorithm.syn] | 
ranges::fold_meow should explicitly spell out the return type | 
Yes | 
 | 
 | 
| 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 constructs optional<U> | 
Yes | 
3 | 
 | 
| 4094(i) | 
New | 
26.6.18 [alg.fold] | 
ranges::fold_meow is overconstrained | 
Yes | 
3 | 
 | 
| 3969(i) | 
New | 
26.6.18 [alg.fold] | 
std::ranges::fold_left_first_with_iter should be more ADL-proof | 
Yes | 
3 | 
 | 
| 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 of InputIterator increments unspecified | 
No | 
3 | 
 | 
| 3868(i) | 
LEWG | 
26.7.5 [alg.replace] | 
Constrained algorithms should not require output_iterator | 
Yes | 
4 | 
 | 
| 4269(i) | 
Tentatively Ready | 
26.7.9 [alg.unique] | 
unique_copy passes arguments to its predicate backwards | 
Yes | 
 | 
 | 
| 4103(i) | 
New | 
26.7.9 [alg.unique] | 
ranges::unique_copy's constraints for the case where result is an
    input_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 of nth_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 and ranges::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" in min,
max, and minmax is unclear | 
Yes | 
3 | 
 | 
| 4034(i) | 
New | 
26.8.9 [alg.min.max] | 
Clarify specification of std::min and std::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-only T, but are 
specified to make N copies of T into the destination range | 
No | 
2 | 
 | 
| 3463(i) | 
New | 
26.10.11 [transform.inclusive.scan] | 
Incorrect requirements for transform_inclusive_scan without initial value | 
Yes | 
3 | 
 | 
| 4265(i) | 
Tentatively Ready | 
26.10.16 [numeric.ops.midpoint] | 
std::midpoint should not accept const bool | 
Yes | 
 | 
 | 
| 3628(i) | 
New | 
26.11 [specialized.algorithms] | 
"Effects: Equivalent to:" and uninitialized memory algorithms | 
No | 
3 | 
 | 
| 3063(i) | 
New | 
26.11 [specialized.algorithms] | 
Parallel algorithms in <memory> are underspecified | 
No | 
3 | 
 | 
| 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 of std::ranges::generate_random | 
No | 
2 | 
 | 
  | Issue | 
  Status | 
  Section | 
  Title | 
  Proposed Resolution | 
  Priority | 
  Duplicates | 
| 2513(i) | 
New | 
27.1 [strings.general] | 
Missing requirements for basic_string::value_type | 
No | 
4 | 
 | 
| 4152(i) | 
New | 
27.2.2 [char.traits.require] | 
The primary template of std::char_traits is totally underspecified | 
Yes | 
4 | 
 | 
| 3694(i) | 
New | 
27.2.2 [char.traits.require] | 
Should traits_type::length be customizable? | 
No | 
4 | 
 | 
| 3942(i) | 
New | 
27.2.4 [char.traits.specializations] | 
Inconsistent use of const char_type& in standard specializations of std::char_traits | 
Yes | 
3 | 
 | 
| 4063(i) | 
New | 
27.2.4.2 [char.traits.specializations.char] | 
Freestanding std::char_traits<char>::eof depends on non-freestanding EOF | 
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 a std::span or std::basic_string_view is not clear | 
No | 
3 | 
 | 
| 2883(i) | 
LEWG | 
27.3 [string.view] | 
The standard library should provide string_view parameters instead or in addition for functions 
      defined with char const * or string const & as parameter types. | 
No | 
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 between std::basic_string's data() and operator[] 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 of std::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 (and
not 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 of to_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 by std::from_chars is underspecified | 
Yes | 
3 | 
 | 
| 3082(i) | 
Open | 
28.2.3 [charconv.from.chars] | 
from_chars specification regarding floating point rounding is inconsistent | 
Yes | 
2 | 
 | 
| 3081(i) | 
Open | 
28.2.3 [charconv.from.chars] | 
Floating point from_chars API does not distinguish between overflow and underflow | 
Yes | 
2 | 
 | 
| 3353(i) | 
New | 
28.3.3.1 [locale] | 
locale's copy assignment operator should return locale& | 
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 and do_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 of std::num_get::do_get for bool call the overload for long? | 
No | 
 | 
 | 
| 3689(i) | 
New | 
28.3.4.3.2.3 [facet.num.get.virtuals] | 
num_get overflow determination unclear and incorrect | 
No | 
3 | 
 | 
| 3214(i) | 
New | 
28.3.4.3.2.3 [facet.num.get.virtuals] | 
§[facet.num.get.virtuals] doesn't say what it means for digit grouping to be consistent | 
No | 
4 | 
 | 
| 4216(i) | 
New | 
28.3.4.3.3.3 [facet.num.put.virtuals] | 
num_put::do_put and void pointers | 
Yes | 
3 | 
 | 
| 2703(i) | 
New | 
28.3.4.3.3.3 [facet.num.put.virtuals] | 
No provision for fill-padding when boolalpha is set | 
No | 
3 | 
 | 
| 2702(i) | 
New | 
28.3.4.3.3.3 [facet.num.put.virtuals] | 
num_put::do_put(..., bool) performs ill-formed do_put call | 
No | 
3 | 
 | 
| 2117(i) | 
Open | 
28.3.4.3.3.3 [facet.num.put.virtuals] | 
ios_base manipulators should have showgrouping/noshowgrouping | 
No | 
3 | 
 | 
| 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 does time_get::do_get require a valid pointer when none of the others do? | 
Yes | 
3 | 
 | 
| 2512(i) | 
Open | 
28.3.4.6.2.3 [locale.time.get.virtuals] | 
Y2K bites; what is an "unambiguous year identifier"? | 
No | 
4 | 
 | 
| 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 and do_put: U+0020 versus fill | 
Yes | 
3 | 
 | 
| 4263(i) | 
New | 
28.5 [format] | 
What should std::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] | 
Add operator== to format_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 when charT is wchar_t | 
No | 
3 | 
 | 
| 3644(i) | 
New | 
28.5.2.2 [format.string.std] | 
std::format does not define "integer presentation type" | 
Yes | 
2 | 
 | 
| 3586(i) | 
New | 
28.5.2.2 [format.string.std] | 
Formatting character alignment inconsistencies | 
Yes | 
2 | 
 | 
| 4090(i) | 
Open | 
28.5.2.2 [format.string.std] | 
Underspecified use of locale facets for locale-dependent std::format | 
Yes | 
3 | 
 | 
| 4078(i) | 
New | 
28.5.5 [format.functions] | 
What if arguments alias the output buffer in std::format_to? | 
No | 
4 | 
 | 
| 3993(i) | 
New | 
28.5.6.1 [formatter.requirements] | 
The parse function of a BasicFormatter type needs to be constexpr | 
Yes | 
3 | 
 | 
| 4240(i) | 
New | 
28.5.6.3 [format.formattable] | 
The formattable type is not a formattable type | 
Yes | 
2 | 
 | 
| 3943(i) | 
New | 
28.5.6.3 [format.formattable] | 
Clarify lifetime requirements of BasicFormatter and Formatter | 
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 does std::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 in range_formatter::format | 
Yes | 
 | 
 | 
| 4107(i) | 
New | 
28.5.7.4 [format.range.fmtmap] | 
Map formatter may conflict with user-defined specializations of pair/tuple formatters | 
Yes | 
3 | 
 | 
| 4399(i) | 
Tentatively Ready | 
28.5.9 [format.tuple] | 
enable_nonlocking_formatter_optimization for pair and tuple needs remove_cvref_t | 
Yes | 
 | 
 | 
| 2490(i) | 
New | 
28.6 [re] | 
<regex> needs lots of noexcept | 
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 for CharT in the regex library | 
No | 
4 | 
 | 
| 3606(i) | 
New | 
28.6.2 [re.req] | 
Missing regex_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 in std::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 throwing 
BidirectionalIterator | 
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] | 
Inconsistent basic_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 type syntax_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 no std::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 of operator== for regex_token_iterator | 
Yes | 
3 | 
 | 
| 2546(i) | 
New | 
28.6.12 [re.grammar] | 
Implementability of locale-sensitive UnicodeEscapeSequence matching | 
No | 
4 | 
 | 
| 2986(i) | 
New | 
28.6.12 [re.grammar] | 
Handling of multi-character collating elements by the regex FSM is underspecified | 
No | 
4 | 
 | 
| 2987(i) | 
New | 
28.6.12 [re.grammar] | 
Relationship between traits_inst.lookup_collatename and the regex FSM is underspecified with 
regards to ClassAtomCollatingElement | 
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-defined std::complex<NonFloatingPoint> | 
No | 
3 | 
 | 
| 3933(i) | 
New | 
29.4.3 [complex] | 
P1467R9 accidentally changed the signatures of certain constructors of std::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] with int8_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 for negative_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 for piecewise_linear_distribution | 
Yes | 
4 | 
 | 
| 3964(i) | 
New | 
29.6.3.3 [valarray.transcend] | 
std::atan2 and std::pow overloads that take two std::valarray parameters 
should require the arguments to have the same length | 
Yes | 
4 | 
 | 
| 2423(i) | 
New | 
29.6.5 [template.slice.array] | 
Missing specification slice_array, gslice_array, mask_array, indirect_array copy constructor | 
Yes | 
4 | 
 | 
| 2115(i) | 
Open | 
29.6.8 [template.mask.array] | 
Undefined behaviour for valarray assignments with mask_array index? | 
No | 
4 | 
 | 
| 3693(i) | 
New | 
29.7 [c.math] | 
§[c.math] Can any of float/double/long double overloads be fused into template overloads? | 
No | 
2 | 
 | 
| 2847(i) | 
New | 
29.7.1 [cmath.syn] | 
sin(float) should call sinf(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 a std::abs overload | 
No | 
3 | 
 | 
| 3172(i) | 
New | 
29.7.3 [c.math.hypot3] | 
3-arg std::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 | 
 | 
| 4136(i) | 
Tentatively Ready | 
29.9.3 [linalg.general] | 
Specify behavior of [linalg] Hermitian algorithms on diagonal with nonzero imaginary part | 
Yes | 
 | 
 | 
| 4185(i) | 
New | 
29.9.7 [linalg.helpers] | 
Ill-formed, no diagnostic required on runtime behavior | 
No | 
3 | 
 | 
| 4302(i) | 
LEWG | 
29.9.13.8 [linalg.algs.blas1.ssq] | 
Problematic vector_sum_of_squares wording | 
Yes | 
1 | 
 | 
| 4420(i) | 
New | 
29.10 [simd] | 
§[simd] conversions (constructor, load, stores, gather, and scatter) are
incorrectly constrained for <stdfloat> types | 
Yes | 
1 | 
 | 
| 4409(i) | 
New | 
29.10 [simd] | 
Constant expression ranges::size(r) Constraints and Mandates in [simd] | 
Yes | 
3 | 
 | 
| 4414(i) | 
New | 
29.10.2.2 [simd.expos.abi] | 
§[simd.expos.abi] deduce-abi-t is underspecified and incorrectly referenced
from rebind and resize | 
Yes | 
 | 
 | 
| 4412(i) | 
Tentatively Ready | 
29.10.3 [simd.syn] | 
Fix declaration of zero_element and uninit_element | 
Yes | 
 | 
 | 
| 4413(i) | 
Tentatively Ready | 
29.10.4 [simd.traits] | 
Unused/left-over simd::alignment specialization for basic_mask | 
Yes | 
 | 
 | 
| 4403(i) | 
Tentatively Ready | 
29.10.7.2 [simd.ctor] | 
simd::basic_vec CTAD misses difference type casting | 
Yes | 
 | 
 | 
| 4407(i) | 
Tentatively Ready | 
29.10.7.2 [simd.ctor] | 
constexpr-wrapper-like needs remove_cvref_t in simd::basic_vec
constructor | 
Yes | 
 | 
 | 
| 4391(i) | 
Tentatively NAD | 
29.10.7.2 [simd.ctor] | 
Ambiguities of simd::basic_vec constructor | 
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] | 
Hardening simd::vec::operator[] | 
Yes | 
3 | 
 | 
| 4230(i) | 
New | 
29.10.8.4 [simd.complex.access] | 
simd<complex>::real/imag is overconstrained | 
Yes | 
2 | 
 | 
| 4280(i) | 
Tentatively Ready | 
29.10.8.7 [simd.loadstore] | 
simd::partial_load uses undefined identifier T | 
Yes | 
 | 
 | 
| 4392(i) | 
New | 
29.10.8.7 [simd.loadstore] | 
simd::unchecked_load misses difference type casting | 
Yes | 
3 | 
 | 
| 4394(i) | 
New | 
29.10.8.7 [simd.loadstore] | 
simd::unchecked_load(I first, S last) construct span maybe ill-formed | 
Yes | 
3 | 
 | 
| 4393(i) | 
New | 
29.10.8.11 [simd.permute.memory] | 
simd::unchecked_scatter_to is underconstrained | 
Yes | 
2 | 
 | 
| 4386(i) | 
New | 
29.10.8.13 [simd.alg] | 
std::simd::select(bool c, const T& a, const U& b) is underconstrained
 | 
Yes | 
3 | 
 | 
| 4375(i) | 
Tentatively Ready | 
29.10.8.15 [simd.bit] | 
std::simd::bit_ceil should not be noexcept | 
Yes | 
 | 
 | 
| 4402(i) | 
New | 
29.10.9.1 [simd.mask.overview] | 
List-initialization of iterators in [simd.mask.overview] | 
Yes | 
3 | 
 | 
| 4382(i) | 
Tentatively Ready | 
29.10.9.2 [simd.mask.ctor] | 
The simd::basic_mask(bool) overload needs to be more constrained
 | 
Yes | 
 | 
 | 
| 4238(i) | 
New | 
29.10.9.4 [simd.mask.unary] | 
simd_mask<complex<double>>::operator+/-/~ return a disabled simd specialization | 
Yes | 
1 | 
 | 
| 4376(i) | 
New | 
29.10.9.4 [simd.mask.unary] | 
ABI tag in return type of [simd.mask.unary] is overconstrained | 
Yes | 
1 | 
 | 
  | Issue | 
  Status | 
  Section | 
  Title | 
  Proposed Resolution | 
  Priority | 
  Duplicates | 
| 2592(i) | 
New | 
30.2 [time.syn] | 
Require that chrono::duration_casts from smaller durations to larger durations do not overflow | 
Yes | 
4 | 
 | 
| 3090(i) | 
Tentatively Ready | 
30.5.2 [time.duration.cons] | 
What is §[time.duration.cons]p4's "no overflow is induced in the conversion" intended to mean? | 
Yes | 
3 | 
 | 
| 3503(i) | 
New | 
30.5.8 [time.duration.cast] | 
chrono::ceil has surprising requirement | 
Yes | 
3 | 
 | 
| 2383(i) | 
Open | 
30.5.9 [time.duration.literals] | 
Overflow cannot be ill-formed for chrono::duration integer literals | 
No | 
3 | 
 | 
| 4288(i) | 
New | 
30.7.2.2 [time.clock.system.members] | 
The Constraints: element in [time.clock.system.members] is probably wrong | 
Yes | 
3 | 
 | 
| 4257(i) | 
Tentatively Ready | 
30.7.9 [time.clock.local] | 
Stream insertion for chrono::local_time should be constrained | 
Yes | 
 | 
 | 
| 4274(i) | 
Tentatively Ready | 
30.9.2 [time.hms.members] | 
The chrono::hh_mm_ss constructor is ill-formed for unsigned durations | 
Yes | 
 | 
 | 
| 4193(i) | 
New | 
30.11.2 [time.zone.db] | 
§[time.zone.db] the specification uses the undefined term "thread-safe" | 
No | 
3 | 
 | 
| 4211(i) | 
New | 
30.11.2.1 [time.zone.db.tzdb] | 
IANA time zone database allows links to refer to links | 
Yes | 
2 | 
 | 
| 3678(i) | 
New | 
30.11.5.1 [time.zone.overview] | 
Constructors of std::chrono::time_zone might be overly unspecified | 
Yes | 
4 | 
 | 
| 4067(i) | 
New | 
30.11.7.2 [time.zone.zonedtime.ctor] | 
Inconsistency and potential infinity meta-recursion in std::chrono::zoned_time's constructors | 
Yes | 
3 | 
 | 
| 4139(i) | 
New | 
30.11.8 [time.zone.leap] | 
§[time.zone.leap] recursive constraint in <=> | 
No | 
3 | 
 | 
| 3831(i) | 
New | 
30.12 [time.format] | 
Two-digit formatting of negative year is ambiguous | 
Yes | 
3 | 
 | 
| 4022(i) | 
New | 
30.12 [time.format] | 
Ambiguity in the formatting of negative years with format specifier %C | 
Yes | 
3 | 
 | 
| 4400(i) | 
New | 
30.12 [time.format] | 
enable_nonlocking_formatter_optimization for durations with custom rep | 
Yes | 
3 | 
 | 
| 4118(i) | 
New | 
30.12 [time.format] | 
How should duration formatters format custom rep types? | 
Yes | 
3 | 
 | 
| 3856(i) | 
New | 
30.12 [time.format] | 
Unclear which conversion specifiers are valid for each chrono type | 
Yes | 
3 | 
 | 
| 3921(i) | 
New | 
30.12 [time.format] | 
Is std::chrono::duration<std::int64_t, std::ratio<INT64_MAX - 1, INT64_MAX>>{40} 
required to be correctly formatted? | 
No | 
3 | 
 | 
| 3844(i) | 
Open | 
30.12 [time.format] | 
Non-numeric formats for negative durations | 
Yes | 
3 | 
 | 
| 3962(i) | 
New | 
30.13 [time.parse] | 
What is the "decimal precision of the input"? | 
Yes | 
3 | 
 | 
| 3960(i) | 
New | 
30.13 [time.parse] | 
How does chrono::parse handle duplicated data? | 
Yes | 
3 | 
 | 
| 3961(i) | 
New | 
30.13 [time.parse] | 
Does chrono::parse check format strings? | 
Yes | 
3 | 
 | 
  | Issue | 
  Status | 
  Section | 
  Title | 
  Proposed Resolution | 
  Priority | 
  Duplicates | 
| 423(i) | 
Open | 
31 [input.output] | 
Effects of negative streamsize 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] | 
Clarify basic_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 to wchar_t const* or to wchar_t not invoked for operator<< | 
Yes | 
4 | 
 | 
| 2497(i) | 
New | 
31.7.6.2.4 [ostream.sentry] | 
Use of uncaught_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 of badbit in definition of 
vprint_unicode/vprint_nonunicode | 
Yes | 
4 | 
 | 
| 3501(i) | 
New | 
31.7.6.5 [ostream.manip] | 
basic_syncbuf-related manipulators refer to some Allocator without defining it | 
Yes | 
3 | 
 | 
| 4364(i) | 
New | 
31.7.7 [std.manip] | 
SFINAE-friendliness on operator<< and operator>> 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 for basic_syncbuf::emit()? | 
No | 
3 | 
 | 
| 3497(i) | 
New | 
31.11.2.4 [syncstream.syncbuf.members] | 
Postconditions for basic_syncbuf::emit() | 
No | 
3 | 
 | 
| 3098(i) | 
New | 
31.12.6.5.9 [fs.path.decompose] | 
Misleading example for filesystem::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 be std::filesystem::path | 
Yes | 
3 | 
 | 
| 4070(i) | 
Open | 
31.12.6.9.2 [fs.path.fmtr.funcs] | 
Transcoding by std::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 and recursive_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 undefined options | 
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 be Recommended practice | 
No | 
4 | 
 | 
| 3057(i) | 
Open | 
31.12.13.4 [fs.op.copy] | 
Correct copy_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] | 
Unspecified Return type: elements | 
Yes | 
3 | 
 | 
| 3499(i) | 
New | 
32.2.5.4 [thread.req.lockable.timed] | 
Timed lockable and mutex requirements are imprecise about duration and time_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 of constexpr for inplace_stop_token and inplace_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 from volatile atomics | 
Yes | 
3 | 
 | 
| 3220(i) | 
New | 
32.5.2 [atomics.syn] | 
P0558 broke conforming C++14 uses of atomic shared_ptr | 
Yes | 
3 | 
 | 
| 2236(i) | 
SG1 | 
32.5.2 [atomics.syn] | 
kill_dependency unconditionally noexcept | 
No | 
4 | 
 | 
| 4309(i) | 
Tentatively NAD | 
32.5.4 [atomics.order] | 
How are two seq_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 | 
 | 
| 4377(i) | 
Tentatively Ready | 
32.5.7.2 [atomics.ref.ops] | 
Misleading note about lock-free property of std::atomic_ref | 
Yes | 
 | 
 | 
| 4244(i) | 
Tentatively NAD | 
32.5.7.2 [atomics.ref.ops] | 
Whether the spuriously failed comparison applies to compare_exchange_strong is unclear | 
No | 
 | 
 | 
| 3409(i) | 
New | 
32.5.7.2 [atomics.ref.ops] | 
Too lax description of atomic_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) | 
SG1 | 
32.5.8.2 [atomics.types.operations] | 
Missing volatile atomic deprecations | 
Yes | 
3 | 
 | 
| 3047(i) | 
New | 
32.5.8.3 [atomics.types.int] | 
atomic compound assignment operators can cause undefined behavior when corresponding 
fetch_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] | 
Add mutex, recursive_mutex, is_locked function | 
No | 
4 | 
 | 
| 3343(i) | 
Open | 
32.7.3 [thread.condition.nonmember] | 
Ordering of calls to unlock() and notify_all() in Effects element of notify_all_at_thread_exit() should be reversed | 
Yes | 
3 | 
 | 
| 4301(i) | 
Tentatively Ready | 
32.7.4 [thread.condition.condvar] | 
condition_variable{_any}::wait_{for, until} should take timeout by value | 
Yes | 
 | 
 | 
| 3504(i) | 
New | 
32.7.4 [thread.condition.condvar] | 
condition_variable::wait_for is overspecified | 
Yes | 
3 | 
 | 
| 3898(i) | 
New | 
32.9.3.3 [thread.barrier.class] | 
Possibly unintended preconditions for completion functions of std::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 a promise at thread exit | 
Yes | 
3 | 
 | 
| 3582(i) | 
New | 
32.10.9 [futures.async] | 
Unclear where std::async exceptions are handled | 
Yes | 
3 | 
 | 
| 2202(i) | 
Deferred | 
32.10.9 [futures.async] | 
Missing allocator support by async | 
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 of MANDATE-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 customize forwarding_query_t by inheriting from it | 
Yes | 
4 | 
 | 
| 4354(i) | 
SG1 | 
33.5.8 [exec.get.fwd.progress] | 
Reconsider weakly_parallel as the default forward_progress_guarantee | 
Yes | 
1 | 
 | 
| 4328(i) | 
Tentatively Ready | 
33.6 [exec.sched] | 
Remove note in §[exec.sched] regarding waiting for completion of scheduled operations | 
Yes | 
 | 
 | 
| 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 return void | 
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 | 
 | 
| 4278(i) | 
New | 
33.9.2 [exec.snd.expos] | 
Consider changing how get-domain-early(sndr) works | 
No | 
 | 
 | 
| 4248(i) | 
New | 
33.9.2 [exec.snd.expos] | 
Late domain-based dispatching of schedule_from and continues_on are flipped | 
Yes | 
1 | 
 | 
| 4190(i) | 
New | 
33.9.2 [exec.snd.expos] | 
Specification of completion-signatures-for in [exec.snd.expos]/p39 is recursive | 
Yes | 
2 | 
 | 
| 4368(i) | 
New | 
33.9.5 [exec.domain.default] | 
Potential dangling reference returned from transform_sender | 
Yes | 
1 | 
 | 
| 4363(i) | 
Tentatively NAD | 
33.9.6 [exec.snd.transform] | 
transform_sender comparing types ignoring cv-qualifiers doesn't take into account differences in value category | 
Yes | 
 | 
 | 
| 4355(i) | 
New | 
33.9.10 [exec.connect] | 
connect-awaitable() should mandate rcvr can receive all completion-signals rather than using constraints | 
Yes | 
2 | 
 | 
| 4356(i) | 
New | 
33.9.10 [exec.connect] | 
connect() should use get_allocator(get_env(rcvr)) to allocate the coroutine-state for a 
connect-awaitable coroutine | 
Yes | 
2 | 
 | 
| 4357(i) | 
New | 
33.9.10 [exec.connect] | 
connect-awaitable should use is_void_v to check for result-type of 
co_await expression instead of same_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 | 
 | 
| 4369(i) | 
New | 
33.9.12.9 [exec.then] | 
check-types function for upon_error and upon_stopped is wrong | 
Yes | 
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 be noexcept | 
Yes | 
2 | 
 | 
| 4358(i) | 
New | 
33.13.1 [exec.as.awaitable] | 
§[exec.as.awaitable] is using "Preconditions:" when it should probably be described in the constraint | 
Yes | 
2 | 
 | 
| 4360(i) | 
New | 
33.13.1 [exec.as.awaitable] | 
awaitable-sender concept should qualify use of awaitable-receiver type | 
Yes | 
2 | 
 | 
| 4359(i) | 
New | 
33.13.1 [exec.as.awaitable] | 
as_awaitable(expr, p) does not define semantics of call if p 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 use Mandates 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 | 
 | 
| 4342(i) | 
Tentatively Ready | 
33.13.5 [exec.task.scheduler] | 
Missing rvalue reference qualification for task_scheduler::ts-sender::connect() | 
Yes | 
 | 
 | 
| 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 | 
 | 
| 4341(i) | 
Tentatively Ready | 
33.13.6.2 [task.class] | 
Missing rvalue reference qualification for task::connect() | 
Yes | 
 | 
 | 
| 4343(i) | 
Tentatively Ready | 
33.13.6.2 [task.class] | 
Missing default template arguments for task | 
Yes | 
 | 
 | 
| 4338(i) | 
LEWG | 
33.13.6.2 [task.class] | 
sender unaware coroutines should be able to co_await a task | 
No | 
2 | 
 | 
| 4348(i) | 
LEWG | 
33.13.6.2 [task.class] | 
task doesn't support symmetric transfer | 
No | 
2 | 
 | 
| 4340(i) | 
Tentatively Ready | 
33.13.6.5 [task.promise] | 
task::promise_type::unhandled_stopped() should be noexcept | 
Yes | 
 | 
 | 
| 4345(i) | 
Tentatively Ready | 
33.13.6.5 [task.promise] | 
task::promise_type::return_value default template parameter | 
Yes | 
 | 
 | 
| 4346(i) | 
Tentatively Ready | 
33.13.6.5 [task.promise] | 
task::promise_type::return_void/value lack a specification | 
Yes | 
 | 
 | 
| 4349(i) | 
Tentatively Ready | 
33.13.6.5 [task.promise] | 
task is not actually started lazily | 
Yes | 
 | 
 | 
| 4415(i) | 
Tentatively Ready | 
33.13.6.5 [task.promise] | 
task::promise_type::uncaught_exception seems to be misnamed | 
Yes | 
 | 
 | 
| 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 arbitrary allocator_arg position | 
No | 
2 | 
 |