| Issue | 
  Status | 
  Section | 
  Title | 
  Proposed Resolution | 
  Priority | 
  Duplicates | 
| 2392(i) | 
New | 
3.36 [defns.ntcts] | 
"character type" is used but not defined | 
No | 
3 | 
 | 
| 3513(i) | 
New | 
3.43 [defns.prog.def.type] | 
Fix definition of program-defined based on its uses | 
Yes | 
3 | 
 | 
| 3669(i) | 
New | 
4.1.2 [intro.abstract] | 
std::filesystem operations should be observable behaviour | 
No | 
3 | 
 | 
| 2506(i) | 
SG1 | 
6.9.2 [intro.multithread] | 
Underspecification of atomics | 
No | 
3 | 
 | 
| 3105(i) | 
New | 
16 [library] | 
T1 is convertible to T2 | 
No | 
3 | 
 | 
| 2136(i) | 
Open | 
16.3.2 [structure] | 
Postconditions vs. exceptions | 
No | 
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 | 
 | 
| 3401(i) | 
New | 
16.3.2.4 [structure.specifications] | 
Is "as if by" equivalent to "equivalent to"? | 
No | 
3 | 
 | 
| 3193(i) | 
New | 
16.3.2.4 [structure.specifications] | 
Mandates: and Expects: elements are not defined for 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 | 
 | 
| 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 | 
 | 
| 2146(i) | 
Open | 
16.4.4.2 [utility.arg.requirements] | 
Are reference types Copy/Move-Constructible/Assignable or Destructible? | 
No | 
3 | 
 | 
| 2152(i) | 
LEWG | 
16.4.4.3 [swappable.requirements] | 
Instances of standard container types are not swappable | 
Yes | 
3 | 
 | 
| 3157(i) | 
New | 
16.4.4.6 [allocator.requirements] | 
Allocator destroy and fancy pointer operations must be non-throwing | 
Yes | 
3 | 
 | 
| 2461(i) | 
New | 
16.4.4.6 [allocator.requirements] | 
Interaction between allocators and container exception safety guarantees | 
No | 
3 | 
 | 
| 3044(i) | 
New | 
16.4.4.6 [allocator.requirements] | 
Strange specification of max_size() for an allocator | 
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 | 
 | 
| 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 | 
 | 
| 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 | 
 | 
| 3429(i) | 
New | 
16.4.5.11 [res.on.requirements] | 
"models" should subsume like "satisfies" | 
Yes | 
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 | 
 | 
| 3229(i) | 
New | 
16.4.6.13 [res.on.exception.handling] | 
§[res.on.exception.handling]#3 cannot apply to types with implicitly declared destructors | 
Yes | 
3 | 
 | 
| 3854(i) | 
New | 
16.4.6.13 [res.on.exception.handling] | 
§[res.on.exception.handling]/3 should not be applied to all standard library types | 
No | 
3 | 
 | 
| 3217(i) | 
New | 
17.3.1 [support.limits.general] | 
<memory> and <execution> should define __cpp_lib_parallel_algorithm | 
Yes | 
3 | 
 | 
| 3931(i) | 
New | 
17.3.2 [version.syn] | 
Too many paper bump __cpp_lib_ranges | 
Yes | 
3 | 
 | 
| 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 | 
 | 
| 2815(i) | 
New | 
17.5 [support.start.term] | 
quick_exit can deadlock | 
Yes | 
3 | 
 | 
| 3084(i) | 
New | 
17.5 [support.start.term] | 
Termination in C++ is unclear | 
No | 
3 | 
 | 
| 2737(i) | 
New | 
17.6.3.2 [new.delete.single] | 
Consider relaxing object size restrictions for single-object allocation functions | 
No | 
3 | 
 | 
| 3086(i) | 
New | 
17.6.3.2 [new.delete.single] | 
Possible problem in §[new.delete.single] | 
Yes | 
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 | 
 | 
| 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 | 
 | 
| 2088(i) | 
Open | 
17.9.5 [exception.terminate] | 
std::terminate problem | 
No | 
3 | 
 | 
| 2453(i) | 
New | 
17.10 [support.initlist] | 
§[iterator.range] and now [iterator.container] aren't available via <initializer_list> | 
No | 
3 | 
 | 
| 3584(i) | 
New | 
17.11.3 [cmp.common] | 
Clarify common comparison category conversions | 
Yes | 
3 | 
 | 
| 3587(i) | 
New | 
17.11.4 [cmp.concept] | 
std::three_way_comparable_with<T, U, void> can be satisfied but can't be modeled | 
No | 
3 | 
 | 
| 3491(i) | 
New | 
17.11.6 [cmp.alg] | 
What is a "decayed type"? | 
No | 
3 | 
 | 
| 3932(i) | 
New | 
17.11.6 [cmp.alg] | 
Expression-equivalence is sometimes unimplementable when passing prvalue expressions to comparison CPOs | 
No | 
3 | 
 | 
| 3653(i) | 
New | 
17.12.2 [coroutine.syn] | 
<coroutine> is freestanding, but uses std::hash which is not | 
No | 
3 | 
 | 
| 3484(i) | 
New | 
17.14.7 [support.c.headers.other] | 
Should <stddef.h> declare ::nullptr_t? | 
Yes | 
3 | 
 | 
| 3799(i) | 
New | 
17.14.7 [support.c.headers.other] | 
Should <math.h> provide 3-argument ::hypot overloads? | 
No | 
3 | 
 | 
| 3895(i) | 
New | 
18.3 [concepts.syn] | 
Various relation concepts are missing default values of the second template parameters | 
Yes | 
3 | 
 | 
| 3459(i) | 
New | 
18.4.4 [concept.convertible] | 
Why doesn't std::convertible_to have semantic requirement when To is reference-to-function type? | 
No | 
3 | 
 | 
| 3608(i) | 
New | 
18.4.4 [concept.convertible] | 
convertible_to and temporary-bound references | 
No | 
3 | 
 | 
| 3019(i) | 
New | 
19.5.3.4 [syserr.errcat.derived] | 
Presentation of "program defined classes derived from error_category" [syserr.errcat.derived] unclear and contains mistakes | 
No | 
3 | 
 | 
| 3053(i) | 
New | 
19.5.4.1 [syserr.errcode.overview] | 
Prohibit error_code construction from rvalues of error_category | 
Yes | 
3 | 
 | 
| 3162(i) | 
New | 
19.5.8.2 [syserr.syserr.members] | 
system_error::system_error(error_code ec) not explicit | 
Yes | 
3 | 
 | 
| 3625(i) | 
New | 
19.6.2 [stacktrace.syn] | 
Should <stacktrace> provide range access function templates? | 
Yes | 
3 | 
 | 
| 3626(i) | 
New | 
19.6.4.1 [stacktrace.basic.overview] | 
Is std::basic_stacktrace required to use contiguous storage? | 
Yes | 
3 | 
 | 
| 2421(i) | 
New | 
20.2.5 [ptr.align] | 
Non-specification of handling zero size in std::align [ptr.align] | 
No | 
3 | 
 | 
| 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 | 
 | 
| 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 | 
 | 
| 3159(i) | 
New | 
20.3.1.3 [unique.ptr.single] | 
§[unique.ptr.single] requirements on deleter may be too strict | 
No | 
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 | 
 | 
| 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 | 
 | 
| 3210(i) | 
New | 
20.3.2.2.7 [util.smartptr.shared.create] | 
allocate_shared is inconsistent about removing const from the pointer 
passed to allocator construct and destroy | 
Yes | 
3 | 
 | 
| 3216(i) | 
New | 
20.3.2.2.7 [util.smartptr.shared.create] | 
Rebinding the allocator before calling construct/destroy in allocate_shared | 
Yes | 
3 | 
 | 
| 3637(i) | 
New | 
20.4.2 [mem.res.class] | 
pmr::memory_resource::do_allocate needs clarification | 
No | 
3 | 
 | 
| 3634(i) | 
New | 
20.4.4 [mem.res.global] | 
When are static-duration memory_resource objects destroyed? | 
No | 
3 | 
 | 
| 2848(i) | 
New | 
20.4.5.2 [mem.res.pool.options] | 
Pass-through threshold for pool allocator | 
No | 
3 | 
 | 
| 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 | 
 | 
| 2077(i) | 
Open | 
21.3.5.4 [meta.unary.prop] | 
Further incomplete constraints for type traits | 
No | 
3 | 
 | 
| 2358(i) | 
Open | 
21.3.5.4 [meta.unary.prop] | 
Apparently-bogus definition of is_empty type trait | 
Yes | 
3 | 
 | 
| 2116(i) | 
Open | 
21.3.5.4 [meta.unary.prop] | 
is_nothrow_constructible and destructors | 
No | 
3 | 
 | 
| 2496(i) | 
New | 
21.3.5.4 [meta.unary.prop] | 
Certain hard-to-avoid errors not in the immediate context are not allowed to be triggered by 
the evaluation of type traits | 
No | 
3 | 
 | 
| 3697(i) | 
New | 
21.3.5.4 [meta.unary.prop] | 
Preconditions of reference_constructs_from_temporary/reference_converts_from_temporary seem wrong | 
Yes | 
3 | 
 | 
| 3929(i) | 
New | 
21.3.5.4 [meta.unary.prop] | 
Preconditions for type traits should be Mandates | 
Yes | 
3 | 
 | 
| 2827(i) | 
New | 
21.3.5.4 [meta.unary.prop] | 
is_trivially_constructible and non-trivial destructors | 
No | 
3 | 
 | 
| 3174(i) | 
New | 
21.3.7 [meta.rel] | 
Precondition on is_convertible is too strong | 
Yes | 
3 | 
 | 
| 3400(i) | 
New | 
21.3.7 [meta.rel] | 
Does is_nothrow_convertible consider destruction of the destination type? | 
No | 
3 | 
 | 
| 3205(i) | 
New | 
21.3.8.7 [meta.trans.other] | 
decay_t in the new common_type fallback should be remove_cvref_t | 
Yes | 
3 | 
 | 
| 2599(i) | 
New | 
22.2.6 [declval] | 
Library incomplete type permission phrase is unclear | 
No | 
3 | 
 | 
| 2289(i) | 
Open | 
22.3.2 [pairs.pair] | 
constexpr guarantees of defaulted functions still insufficient | 
No | 
3 | 
 | 
| 3342(i) | 
New | 
22.3.2 [pairs.pair] | 
Library wording uses "initializes x with y", which is underspecified | 
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 | 
 | 
| 2528(i) | 
New | 
22.4.4.1 [tuple.cnstr] | 
Order of std::tuple construction unspecified | 
No | 
3 | 
 | 
| 3583(i) | 
New | 
22.4.4.1 [tuple.cnstr] | 
Clarify if/when short circuiting applies to conditions in Constraints: elements | 
No | 
3 | 
 | 
| 2933(i) | 
New | 
22.4.5 [tuple.creation] | 
PR for LWG 2773 could be clearer | 
Yes | 
3 | 
 | 
| 3882(i) | 
New | 
22.4.9 [tuple.rel] | 
tuple relational operators have confused friendships | 
Yes | 
3 | 
 | 
| 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 | 
 | 
| 3886(i) | 
New | 
22.5.3.1 [optional.optional.general] | 
Monad mo' problems | 
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 | 
 | 
| 3424(i) | 
New | 
22.5.3.6 [optional.observe] | 
optional::value_or should never return a cv-qualified type | 
Yes | 
3 | 
 | 
| 3613(i) | 
New | 
22.5.4 [optional.nullopt] | 
Specify that nullopt_t is copyable | 
Yes | 
3 | 
 | 
| 3627(i) | 
New | 
22.5.9 [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 | 
 | 
| 3069(i) | 
New | 
22.6.3.4 [variant.assign] | 
Move assigning variant's subobject corrupts data | 
Yes | 
3 | 
 | 
| 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 | 
 | 
| 2348(i) | 
Open | 
22.9.2 [template.bitset] | 
charT('1') is not the wide equivalent of '1' | 
Yes | 
3 | 
 | 
| 3046(i) | 
New | 
22.10.6 [refwrap] | 
Do not require reference_wrapper to support non-referenceable function types | 
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 | 
 | 
| 2491(i) | 
New | 
22.10.8 [comparisons] | 
std::less<T*> in constant expression | 
Yes | 
3 | 
 | 
| 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 | 
 | 
| 3642(i) | 
New | 
22.10.17.4.3 [func.wrap.move.ctor] | 
move_only_function assignment operators seem to be defined suboptimal | 
Yes | 
3 | 
 | 
| 3512(i) | 
New | 
22.10.19 [unord.hash] | 
Incorrect exception safety guarantee for unordered containers | 
No | 
3 | 
 | 
| 3456(i) | 
New | 
22.13.3 [charconv.from.chars] | 
Pattern used by std::from_chars is underspecified | 
Yes | 
3 | 
 | 
| 3651(i) | 
New | 
22.14 [format] | 
Unspecified lifetime guarantees for the format string | 
No | 
3 | 
 | 
| 3641(i) | 
New | 
22.14.1 [format.syn] | 
Add operator== to format_to_n_result | 
Yes | 
3 | 
 | 
| 3939(i) | 
New | 
22.14.2.2 [format.string.std] | 
§[format.string.std] char is not formatted as a character when charT is wchar_t | 
No | 
3 | 
 | 
| 3776(i) | 
LEWG | 
22.14.6.1 [formatter.requirements] | 
Avoid parsing format-spec if it is not present or empty | 
Yes | 
3 | 
 | 
| 3943(i) | 
New | 
22.14.6.2 [format.formattable] | 
Clarify lifetime requirements of BasicFormatter and Formatter | 
Yes | 
3 | 
 | 
| 3706(i) | 
New | 
22.14.6.3 [format.formatter.spec] | 
How does std::format work with character arrays of unknown bound? | 
No | 
3 | 
 | 
| 3944(i) | 
SG16 | 
22.14.6.3 [format.formatter.spec] | 
Formatters converting sequences of char to sequences of wchar_t | 
No | 
3 | 
 | 
| 3942(i) | 
New | 
23.2.4 [char.traits.specializations] | 
Inconsistent use of const char_type& in standard specializations of std::char_traits | 
Yes | 
3 | 
 | 
| 2959(i) | 
New | 
23.2.4.4 [char.traits.specializations.char16.t] | 
char_traits<char16_t>::eof is a valid UTF-16 code unit | 
No | 
3 | 
 | 
| 3457(i) | 
New | 
23.3.3 [string.view.template] | 
*this is not invalidated | 
Yes | 
3 | 
 | 
| 3451(i) | 
New | 
23.4.3 [basic.string] | 
Inconsistently explicit deduction guides | 
Yes | 
3 | 
 | 
| 3339(i) | 
New | 
23.4.3 [basic.string] | 
Move-constructed empty-container capacity | 
No | 
3 | 
 | 
| 3663(i) | 
New | 
23.4.3.3 [string.cons] | 
basic_string(const T&, const Alloc&) turns moves into copies | 
Yes | 
3 | 
 | 
| 3662(i) | 
New | 
23.4.3.7.2 [string.append] | 
basic_string::append/assign(NTBS, pos, n) suboptimal | 
Yes | 
3 | 
 | 
| 3837(i) | 
New | 
23.4.4.5 [string.erasure] | 
std::erase_if overloads for non-associative containers should move (and
not copy) their predicate object | 
Yes | 
3 | 
 | 
| 2238(i) | 
Open | 
23.5 [c.strings] | 
Problematic iterator-pair constructor of containers | 
No | 
3 | 
 | 
| 3059(i) | 
New | 
24.2 [container.requirements] | 
Wrong requirements for map-like associative container assignment? | 
No | 
3 | 
 | 
| 2321(i) | 
Open | 
24.2.2.1 [container.requirements.general] | 
Moving containers should (usually) be required to preserve iterators | 
Yes | 
3 | 
 | 
| 1521(i) | 
Open | 
24.2.2.1 [container.requirements.general] | 
Requirements on internal pointer representations in containers | 
Yes | 
3 | 
 | 
| 3297(i) | 
New | 
24.2.4 [sequence.reqmts] | 
Useless sequence container requirement | 
Yes | 
3 | 
 | 
| 2705(i) | 
New | 
24.2.4 [sequence.reqmts] | 
Questionable precondition on Sequence containers a.assign(n, t) | 
Yes | 
3 | 
 | 
| 2206(i) | 
Open | 
24.2.4 [sequence.reqmts] | 
Inaccuracy in initializer_list constructor requirements | 
Yes | 
3 | 
 | 
| 3438(i) | 
New | 
24.2.5.1 [container.node.overview] | 
§[container.node.overview] missing multiset/map cases | 
No | 
3 | 
 | 
| 2215(i) | 
Open | 
24.2.7 [associative.reqmts] | 
(unordered) associative container functors should be CopyConstructible | 
Yes | 
3 | 
 | 
| 2227(i) | 
Open | 
24.2.7 [associative.reqmts] | 
Stateful comparison objects in associative containers | 
No | 
3 | 
 | 
| 2844(i) | 
Open | 
24.2.7 [associative.reqmts] | 
Stability of a_uniq.insert(i, j) | 
No | 
3 | 
 | 
| 3227(i) | 
New | 
24.2.7 [associative.reqmts] | 
Ambiguity issue for extract in ordered and unordered associative containers | 
Yes | 
3 | 
 | 
| 2362(i) | 
New | 
24.2.7 [associative.reqmts] | 
unique, associative emplace() should not move/copy the mapped_type constructor 
arguments when no insertion happens | 
No | 
3 | 
 | 
| 3691(i) | 
New | 
24.2.7.1 [associative.reqmts.general] | 
Replacement of keys in associative containers | 
Yes | 
3 | 
 | 
| 3577(i) | 
New | 
24.2.7.1 [associative.reqmts.general] | 
Merging an (unordered) associative container with itself | 
No | 
3 | 
 | 
| 3578(i) | 
New | 
24.2.7.1 [associative.reqmts.general] | 
Iterator SCARYness in the context of associative container merging | 
No | 
3 | 
 | 
| 1175(i) | 
Open | 
24.2.8 [unord.req] | 
unordered complexity | 
Yes | 
3 | 
 | 
| 2198(i) | 
Open | 
24.2.8 [unord.req] | 
max_load_factor(z) makes no strong guarantees, but bans useful behavior | 
Yes | 
3 | 
 | 
| 2189(i) | 
Open | 
24.2.8.2 [unord.req.except] | 
Throwing swap breaks unordered containers' state | 
No | 
3 | 
 | 
| 617(i) | 
Open | 
24.3.7 [array] | 
std::array is a sequence that doesn't satisfy the sequence requirements? | 
No | 
3 | 
 | 
| 3219(i) | 
New | 
24.3.7.1 [array.overview] | 
std::array overview container requirements are incorrect | 
Yes | 
3 | 
 | 
| 2823(i) | 
Open | 
24.3.7.1 [array.overview] | 
std::array initialization is still not permissive enough | 
Yes | 
3 | 
 | 
| 3488(i) | 
Open | 
24.3.7.4 [array.special] | 
Is array<const int, 0> swappable or not? | 
Yes | 
3 | 
 | 
| 2157(i) | 
Open | 
24.3.7.5 [array.zero] | 
How does std::array<T,0> initialization work when T is not default-constructible? | 
Yes | 
3 | 
 | 
| 3308(i) | 
New | 
24.3.8.4 [deque.modifiers] | 
vector and deque iterator erase invalidates elements even when no change occurs | 
Yes | 
3 | 
 | 
| 3758(i) | 
New | 
24.3.11.3 [vector.capacity] | 
Element-relocating operations of std::vector and std::deque 
should conditionally require Cpp17CopyInsertable in their preconditions | 
No | 
3 | 
 | 
| 2158(i) | 
Open | 
24.3.11.3 [vector.capacity] | 
Conditional copy/move in std::vector | 
Yes | 
3 | 
 | 
| 1102(i) | 
Open | 
24.3.11.3 [vector.capacity] | 
std::vector's reallocation policy still unclear | 
Yes | 
3 | 
 | 
| 3638(i) | 
New | 
24.3.12 [vector.bool] | 
vector<bool>::swap(reference, reference) is useless | 
Yes | 
3 | 
 | 
| 1422(i) | 
Open | 
24.3.12 [vector.bool] | 
vector<bool> iterators are not random access | 
No | 
3 | 
 | 
| 3531(i) | 
New | 
24.4.4.1 [map.overview] | 
LWG 3025 broke previous valid code | 
Yes | 
3 | 
 | 
| 2713(i) | 
New | 
24.5 [unord] | 
More missing allocator-extended constructors for unordered containers | 
Yes | 
3 | 
 | 
| 3189(i) | 
New | 
24.6.7 [priority.queue] | 
Missing requirement for std::priority_queue | 
No | 
3 | 
 | 
| 3161(i) | 
Open | 
24.6.8 [stack] | 
Container adapters mandate use of emplace_back but don't require it | 
Yes | 
3 | 
 | 
| 3615(i) | 
New | 
25.3.2.1 [incrementable.traits] | 
The last specialization of incrementable_traits has wrong operand types | 
Yes | 
3 | 
 | 
| 3838(i) | 
New | 
25.3.2.1 [incrementable.traits] | 
The last specialization of  incrementable_traits is under-constrained | 
Yes | 
3 | 
 | 
| 3287(i) | 
New | 
25.3.2.3 [iterator.traits] | 
Exposition-only cpp17-input-iterator concept is needlessly complex | 
Yes | 
3 | 
 | 
| 3890(i) | 
New | 
25.3.4.4 [iterator.concept.winc] | 
ABI issue for integer-class types | 
Yes | 
3 | 
 | 
| 3716(i) | 
New | 
25.3.4.11 [iterator.concept.forward] | 
§[iterator.concept.forward][forward.iterators] Two different definitions of multi-pass guarantee | 
No | 
3 | 
 | 
| 2038(i) | 
Open | 
25.3.5.4 [output.iterators] | 
Missing definition for incrementable iterator | 
No | 
3 | 
 | 
| 2035(i) | 
Open | 
25.3.5.4 [output.iterators] | 
Output iterator requirements are broken | 
Yes | 
3 | 
 | 
| 3344(i) | 
New | 
25.4.3 [iterator.operations] | 
advance(i, most-negative) and prev(i, most-negative) | 
Yes | 
3 | 
 | 
| 3439(i) | 
New | 
25.4.3 [iterator.operations] | 
"Distance" template parameter is underspecified | 
No | 
3 | 
 | 
| 3197(i) | 
New | 
25.4.3 [iterator.operations] | 
std::prev should not require BidirectionalIterator | 
Yes | 
3 | 
 | 
| 2931(i) | 
Open | 
25.4.3 [iterator.operations] | 
Missed optimization opportunity with single-argument std::next | 
No | 
3 | 
 | 
| 3623(i) | 
New | 
25.5.1.1 [reverse.iterators.general] | 
Uses of std::reverse_iterator with containers should not require manually including <iterator> | 
Yes | 
3 | 
 | 
| 2595(i) | 
New | 
25.5.1.2 [reverse.iterator] | 
reverse_iterator::operator[]'s return type revisited | 
Yes | 
3 | 
 | 
| 3602(i) | 
New | 
25.5.1.4 [reverse.iter.cons] | 
reverse_iterator's converting assignment is overconstrained | 
Yes | 
3 | 
 | 
| 3725(i) | 
New | 
25.5.1.6 [reverse.iter.elem] | 
reverse_iterator::operator-> should not use prev for non-pointer iterators | 
Yes | 
3 | 
 | 
| 3783(i) | 
New | 
25.5.5.1 [common.iterator] | 
views::common may not be a range adaptor object | 
Yes | 
3 | 
 | 
| 3748(i) | 
New | 
25.5.5.6 [common.iter.cmp] | 
common_iterator and counted_iterator' operator- are missing cast to return type | 
Yes | 
3 | 
 | 
| 2366(i) | 
New | 
25.6.4 [istreambuf.iterator] | 
istreambuf_iterator end-of-stream equality | 
Yes | 
3 | 
 | 
| 3188(i) | 
New | 
25.6.4 [istreambuf.iterator] | 
istreambuf_iterator::pointer should not be unspecified | 
Yes | 
3 | 
 | 
| 3108(i) | 
New | 
25.6.4.2 [istreambuf.iterator.proxy] | 
istreambuf_iterator::proxy::operator* should be const | 
Yes | 
3 | 
 | 
| 3537(i) | 
New | 
25.7 [iterator.range] | 
§[iterator.range] Missing noexcept for std::rbegin/rend for arrays and 
initializer_list | 
No | 
3 | 
 | 
| 3913(i) | 
SG9 | 
26.2 [ranges.syn] | 
ranges::const_iterator_t<range R> fails to accept arrays of unknown bound | 
Yes | 
3 | 
 | 
| 3907(i) | 
New | 
26.6 [range.factories] | 
Can iterator types of range adaptors and range factories be SCARY? | 
No | 
3 | 
 | 
| 3614(i) | 
New | 
26.6.4.2 [range.iota.view] | 
iota_view::size and the most negative signed integer values | 
Yes | 
3 | 
 | 
| 3846(i) | 
New | 
26.6.4.3 [range.iota.iterator] | 
iota_view::iterator::operator- is overconstrained | 
Yes | 
3 | 
 | 
| 3609(i) | 
New | 
26.6.4.4 [range.iota.sentinel] | 
std::ranges::iota_view<int, long> has non-subtractable iterator and 
sentinel types | 
Yes | 
3 | 
 | 
| 3763(i) | 
New | 
26.6.5.3 [range.repeat.iterator] | 
Should range adaptor iterators only provide iterator_category when its 
difference_type is not an integer-class type? | 
Yes | 
3 | 
 | 
| 3679(i) | 
LEWG | 
26.6.6 [range.istream] | 
Is <ranges> sufficient for istream_view? | 
No | 
3 | 
 | 
| 3489(i) | 
New | 
26.6.6.3 [range.istream.iterator] | 
Improve istream_view wording | 
Yes | 
3 | 
 | 
| 3829(i) | 
New | 
26.7.7.2 [range.as.rvalue.view] | 
as_rvalue_view::end should improve non-common case | 
Yes | 
3 | 
 | 
| 3730(i) | 
New | 
26.7.12.2 [range.drop.view] | 
std::ranges::drop_view may have different size type from its underlying view | 
Yes | 
3 | 
 | 
| 3873(i) | 
New | 
26.7.15.2 [range.join.with.view] | 
join_with_view's const begin is underconstrained | 
No | 
3 | 
 | 
| 3852(i) | 
New | 
26.7.15.3 [range.join.with.iterator] | 
join_with_view::iterator's iter_move and iter_swap should be conditionally noexcept | 
Yes | 
3 | 
 | 
| 3599(i) | 
New | 
26.7.16.2 [range.lazy.split.view] | 
The const overload of lazy_split_view::begin should be constrained by const Pattern | 
Yes | 
3 | 
 | 
| 3685(i) | 
New | 
26.7.16.2 [range.lazy.split.view] | 
In lazy_split_view, CTAD doesn't work when given an input_range input and a tiny-range pattern | 
Yes | 
3 | 
 | 
| 3686(i) | 
New | 
26.7.16.3 [range.lazy.split.outer] | 
In lazy_split_view, comparing a default-constructed outer-iterator or 
inner-iterator with std::default_sentinel results in null pointer dereference | 
Yes | 
3 | 
 | 
| 3830(i) | 
New | 
26.7.20.2 [range.reverse.view] | 
reverse_view should not cache when ranges::next has constant time complexity | 
Yes | 
3 | 
 | 
| 3832(i) | 
New | 
26.7.22.3 [range.elements.iterator] | 
Missing change for element_view::iterator in LWG 3798 | 
Yes | 
3 | 
 | 
| 3919(i) | 
New | 
26.7.23 [range.enumerate] | 
enumerate_view may invoke UB for sized common non-forward underlying ranges | 
Yes | 
3 | 
 | 
| 3731(i) | 
New | 
26.7.24.2 [range.zip.view] | 
zip_view and adjacent_view are underconstrained | 
Yes | 
3 | 
 | 
| 3899(i) | 
New | 
26.8.5 [coro.generator.promise] | 
co_yielding elements of an lvalue generator is unnecessarily inefficient | 
Yes | 
3 | 
 | 
| 3900(i) | 
New | 
26.8.5 [coro.generator.promise] | 
The allocator_arg_t overloads of generator::promise_type::operator new
should not be constrained | 
Yes | 
3 | 
 | 
| 2963(i) | 
New | 
27 [algorithms] | 
Algorithms with underspecified iterator requirements | 
No | 
3 | 
 | 
| 1238(i) | 
Open | 
27 [algorithms] | 
Defining algorithms taking iterator for range | 
No | 
3 | 
 | 
| 3049(i) | 
Open | 
27.2 [algorithms.requirements] | 
Missing wording allowing algorithms to use copies of function objects as substitutes for their parameters | 
Yes | 
3 | 
 | 
| 3793(i) | 
New | 
27.6.5 [alg.foreach] | 
Requirements for some algorithms' Size template parameters are unclear | 
No | 
3 | 
 | 
| 3089(i) | 
New | 
27.7.1 [alg.copy] | 
copy_n should require non-overlapping ranges | 
Yes | 
3 | 
 | 
| 2471(i) | 
Open | 
27.7.1 [alg.copy] | 
copy_n's number of InputIterator increments unspecified | 
No | 
3 | 
 | 
| 2267(i) | 
New | 
27.8.2.4 [partial.sort.copy] | 
partial_sort_copy underspecified for ranges of two different types | 
No | 
3 | 
 | 
| 3534(i) | 
LEWG | 
27.8.7.4 [set.intersection] | 
ranges::set_intersection and ranges::set_difference algorithm requirements are too strict | 
Yes | 
3 | 
 | 
| 3029(i) | 
Open | 
27.8.8.3 [pop.heap] | 
pop_heap over-constrains input | 
Yes | 
3 | 
 | 
| 3487(i) | 
New | 
27.10 [numeric.ops] | 
Missing precondition on input and output aliasing of [numeric.ops] | 
No | 
3 | 
 | 
| 3463(i) | 
New | 
27.10.11 [transform.inclusive.scan] | 
Incorrect requirements for transform_inclusive_scan without initial value | 
Yes | 
3 | 
 | 
| 3063(i) | 
New | 
27.11 [specialized.algorithms] | 
Parallel algorithms in <memory> are underspecified | 
No | 
3 | 
 | 
| 3628(i) | 
New | 
27.11 [specialized.algorithms] | 
"Effects: Equivalent to:" and uninitialized memory algorithms | 
No | 
3 | 
 | 
| 3064(i) | 
New | 
27.11 [specialized.algorithms] | 
How do uninitialized memory algorithms obtain pointer without undefined behavior? | 
No | 
3 | 
 | 
| 3647(i) | 
New | 
27.11.2 [special.mem.concepts] | 
nothrow-input-iterator constraints should not mention copying | 
Yes | 
3 | 
 | 
| 3918(i) | 
LEWG | 
27.11.6 [uninitialized.move] | 
std::uninitialized_move/_n and guaranteed copy elision | 
Yes | 
3 | 
 | 
| 3888(i) | 
New | 
27.11.8 [specialized.construct] | 
Most ranges uninitialized memory algorithms are underconstrained | 
Yes | 
3 | 
 | 
| 3889(i) | 
New | 
27.11.9 [specialized.destroy] | 
std::(ranges::)destroy_at should destroy array elements in the decreasing index order | 
Yes | 
3 | 
 | 
| 3934(i) | 
New | 
28.4.3 [complex] | 
std::complex<T>::operator=(const T&) has no specification | 
Yes | 
3 | 
 | 
| 2714(i) | 
New | 
28.4.6 [complex.ops] | 
complex stream extraction underspecified | 
Yes | 
3 | 
 | 
| 2846(i) | 
New | 
28.4.9 [cmplx.over] | 
Undefined phrase "effectively cast" | 
Yes | 
3 | 
 | 
| 3809(i) | 
New | 
28.5.4.4 [rand.eng.sub] | 
Is std::subtract_with_carry_engine<uint16_t> supposed to work? | 
Yes | 
3 | 
 | 
| 3402(i) | 
New | 
28.5.9.3.4 [rand.dist.bern.negbin] | 
Wording for negative_binomial_distribution is unclear as a consequence of LWG 2406 resolution | 
No | 
3 | 
 | 
| 2847(i) | 
New | 
28.7.1 [cmath.syn] | 
sin(float) should call sinf(float) | 
No | 
3 | 
 | 
| 3093(i) | 
New | 
28.7.2 [c.math.abs] | 
LWG 2294/2192 missed a std::abs overload | 
No | 
3 | 
 | 
| 3172(i) | 
New | 
28.7.3 [c.math.hypot3] | 
3-arg std::hypot is underspecified compared to the 2-arg overload | 
Yes | 
3 | 
 | 
| 3066(i) | 
New | 
28.7.6 [sf.cmath] | 
"report a domain error" in [sf.cmath]/1 is underspecified | 
No | 
3 | 
 | 
| 3090(i) | 
New | 
29.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 | 
29.5.8 [time.duration.cast] | 
chrono::ceil has surprising requirement | 
No | 
3 | 
 | 
| 2383(i) | 
Open | 
29.5.9 [time.duration.literals] | 
Overflow cannot be ill-formed for chrono::duration integer literals | 
No | 
3 | 
 | 
| 3856(i) | 
New | 
29.12 [time.format] | 
Unclear which conversion specifiers are valid for each chrono type | 
Yes | 
3 | 
 | 
| 3921(i) | 
New | 
29.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 | 
 | 
| 3831(i) | 
New | 
29.12 [time.format] | 
Two-digit formatting of negative year is ambiguous | 
Yes | 
3 | 
 | 
| 3844(i) | 
Open | 
29.12 [time.format] | 
Non-numeric formats for negative durations | 
Yes | 
3 | 
 | 
| 3353(i) | 
New | 
30.3.1 [locale] | 
locale's copy assignment operator should return locale& | 
Yes | 
3 | 
 | 
| 3767(i) | 
Open | 
30.3.1.2.1 [locale.category] | 
codecvt<charN_t, char8_t, mbstate_t> incorrectly added to locale | 
Yes | 
3 | 
 | 
| 3337(i) | 
New | 
30.4.2.5.3 [locale.codecvt.virtuals] | 
What is "is initialized" supposed to mean? | 
No | 
3 | 
 | 
| 3689(i) | 
New | 
30.4.3.2.3 [facet.num.get.virtuals] | 
num_get overflow determination unclear and incorrect | 
No | 
3 | 
 | 
| 2117(i) | 
Open | 
30.4.3.3.3 [facet.num.put.virtuals] | 
ios_base manipulators should have showgrouping/noshowgrouping | 
No | 
3 | 
 | 
| 2702(i) | 
New | 
30.4.3.3.3 [facet.num.put.virtuals] | 
num_put::do_put(..., bool) performs ill-formed do_put call | 
No | 
3 | 
 | 
| 2703(i) | 
New | 
30.4.3.3.3 [facet.num.put.virtuals] | 
No provision for fill-padding when boolalpha is set | 
No | 
3 | 
 | 
| 3275(i) | 
New | 
30.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 | 
 | 
| 2983(i) | 
New | 
30.4.7.3.2 [locale.money.put.virtuals] | 
money_put::do_put underspecified | 
Yes | 
3 | 
 | 
| 2691(i) | 
New | 
30.4.7.4 [locale.moneypunct] | 
money_base::space and do_put: U+0020 versus fill | 
Yes | 
3 | 
 | 
| 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 | 
No | 
3 | 
 | 
| 2675(i) | 
New | 
31.5.2.7 [ios.base.callback] | 
register_callback can fail | 
No | 
3 | 
 | 
| 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 | 
 | 
| 2497(i) | 
New | 
31.7.6.2.4 [ostream.sentry] | 
Use of uncaught_exception() | 
Yes | 
3 | 
 | 
| 3501(i) | 
New | 
31.7.6.5 [ostream.manip] | 
basic_syncbuf-related manipulators refer to some Allocator without defining it | 
Yes | 
3 | 
 | 
| 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 | 
 | 
| 3097(i) | 
New | 
31.8.2.5 [stringbuf.virtuals] | 
basic_stringbuf seekoff effects trigger undefined behavior and have contradictory returns | 
No | 
3 | 
 | 
| 3497(i) | 
New | 
31.11.2.4 [syncstream.syncbuf.members] | 
Postconditions for basic_syncbuf::emit() | 
No | 
3 | 
 | 
| 3496(i) | 
New | 
31.11.2.4 [syncstream.syncbuf.members] | 
What does "uniquely associated" mean 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 | 
 | 
| 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 | 
 | 
| 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 | 
 | 
| 2490(i) | 
New | 
32 [re] | 
<regex> needs lots of noexcept | 
No | 
3 | 
 | 
| 3606(i) | 
New | 
32.2 [re.req] | 
Missing regex_traits::locale_type requirements | 
No | 
3 | 
 | 
| 2431(i) | 
New | 
32.2 [re.req] | 
Missing regular expression traits requirements | 
No | 
3 | 
 | 
| 2331(i) | 
Open | 
32.4.2 [re.synopt] | 
regex_constants::collate's effects are inaccurately summarized | 
Yes | 
3 | 
 | 
| 3605(i) | 
New | 
32.4.3 [re.matchflag] | 
regex_constants::match_prev_avail is underspecified | 
No | 
3 | 
 | 
| 2338(i) | 
Open | 
32.6 [re.traits] | 
§[re.traits]/7 expects of locale facets something not guaranteed by [locale.facet]/4 | 
Yes | 
3 | 
 | 
| 3261(i) | 
New | 
32.7 [re.regex] | 
regex components' noexcept annotations appear broken for POCMA or throwing 
BidirectionalIterator | 
No | 
3 | 
 | 
| 3341(i) | 
New | 
32.7.2 [re.regex.construct] | 
basic_regex range constructor: Missing requirements for iterator types | 
No | 
3 | 
 | 
| 3603(i) | 
New | 
32.7.2 [re.regex.construct] | 
Matching of null characters by regular expressions is underspecified | 
No | 
3 | 
 | 
| 3604(i) | 
New | 
32.7.2 [re.regex.construct] | 
What is the effect of an invalid value of type syntax_option_type? | 
No | 
3 | 
 | 
| 2137(i) | 
Open | 
32.7.3 [re.regex.assign] | 
Misleadingly constrained post-condition in the presence of exceptions | 
Yes | 
3 | 
 | 
| 3126(i) | 
New | 
32.8 [re.submatch] | 
There's no std::sub_match::compare(string_view) overload | 
Yes | 
3 | 
 | 
| 2216(i) | 
New | 
32.10.4 [re.alg.replace] | 
regex_replace(basic_string) allocator handling | 
No | 
3 | 
 | 
| 2220(i) | 
Open | 
32.11.2.3 [re.tokiter.comp] | 
Under-specification of operator== for regex_token_iterator | 
Yes | 
3 | 
 | 
| 2987(i) | 
New | 
32.12 [re.grammar] | 
Relationship between traits_inst.lookup_collatename and the regex FSM is underspecified with 
regards to ClassAtomCollatingElement | 
No | 
3 | 
 | 
| 2819(i) | 
New | 
33.2.5 [thread.req.lockable] | 
Unspecified Return type: elements | 
Yes | 
3 | 
 | 
| 3499(i) | 
New | 
33.2.5.4 [thread.req.lockable.timed] | 
Timed lockable and mutex requirements are imprecise about duration and time_point | 
No | 
3 | 
 | 
| 3924(i) | 
New | 
33.3.1 [thread.stoptoken.intro] | 
Stop token data race avoidance requirements unclear | 
Yes | 
3 | 
 | 
| 3516(i) | 
New | 
33.4.3.2 [thread.thread.id] | 
thread::id spaceship may be inconsistent with equality | 
Yes | 
3 | 
 | 
| 3475(i) | 
New | 
33.4.3.3 [thread.thread.constr] | 
std::thread's constructor needs to be able to report general memory allocation failures | 
Yes | 
3 | 
 | 
| 3633(i) | 
New | 
33.5 [atomics] | 
Atomics are copy constructible and copy assignable from volatile atomics | 
Yes | 
3 | 
 | 
| 3220(i) | 
New | 
33.5.2 [atomics.syn] | 
P0558 broke conforming C++14 uses of atomic shared_ptr | 
Yes | 
3 | 
 | 
| 3941(i) | 
SG1 | 
33.5.4 [atomics.order] | 
§[atomics.order] inadvertently prohibits widespread implementation techniques | 
No | 
3 | 
 | 
| 3263(i) | 
New | 
33.5.6 [atomics.wait] | 
Atomic waiting function calls should only be unblocked once | 
Yes | 
3 | 
 | 
| 3485(i) | 
SG1 | 
33.5.7 [atomics.ref.generic] | 
atomic_ref safety should be based on operations that "potentially conflict" rather than lifetime | 
No | 
3 | 
 | 
| 3409(i) | 
New | 
33.5.7.2 [atomics.ref.ops] | 
Too lax description of atomic_ref<T>::required_alignment | 
Yes | 
3 | 
 | 
| 3417(i) | 
SG1 | 
33.5.8.2 [atomics.types.operations] | 
Missing volatile atomic deprecations | 
Yes | 
3 | 
 | 
| 3047(i) | 
New | 
33.5.8.3 [atomics.types.int] | 
atomic compound assignment operators can cause undefined behavior when corresponding 
fetch_meow members don't | 
Yes | 
3 | 
 | 
| 3906(i) | 
New | 
33.5.8.5 [atomics.types.pointer] | 
"Undefined address" is undefined | 
No | 
3 | 
 | 
| 3418(i) | 
New | 
33.5.9 [atomics.nonmembers] | 
Deprecated free functions in <atomic> | 
Yes | 
3 | 
 | 
| 3343(i) | 
New | 
33.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 | 
 | 
| 3504(i) | 
New | 
33.7.4 [thread.condition.condvar] | 
condition_variable::wait_for is overspecified | 
No | 
3 | 
 | 
| 3898(i) | 
New | 
33.9.3.3 [thread.barrier.class] | 
Possibly unintended preconditions for completion functions of std::barrier | 
Yes | 
3 | 
 | 
| 2530(i) | 
Open | 
33.10.5 [futures.state] | 
Clarify observable side effects of releasing a shared state | 
No | 
3 | 
 | 
| 2532(i) | 
Open | 
33.10.6 [futures.promise] | 
Satisfying a promise at thread exit | 
Yes | 
3 | 
 | 
| 3582(i) | 
New | 
33.10.9 [futures.async] | 
Unclear where std::async exceptions are handled | 
Yes | 
3 | 
 | 
| 2507(i) | 
New | 
D.26 [depr.locale.stdcvt] | 
codecvt_mode should be a bitmask type | 
No | 
3 | 
 | 
| 3840(i) | 
Open | 
D.29 [depr.fs.path.factory] | 
filesystem::u8path should be undeprecated | 
Yes | 
3 | 
 | 
| 3812(i) | 
New | 
3.2.2.5 [fund.ts.v3::propagate_const.const_observers] | 
[fund.ts.v3] Incorrect constraint on propagate_const conversion function | 
Yes | 
3 | 
 | 
| 3167(i) | 
Open | 
5.2 [fund.ts.v3::memory.observer.ptr] | 
[fund.ts.v3] Does observer_ptr support function types? | 
No | 
3 | 
 | 
| 3357(i) | 
Open | 
99 [fund.ts.v3::rand.util.randint] | 
[fund.ts.v3] default_random_engine is overspecified for per-thread engine | 
Yes | 
3 | 
 | 
| 3124(i) | 
New | 
13.7.5 [networking.ts::async.exec.ctx.globals] | 
[networking.ts] Unclear how execution_context is intended to store services | 
Yes | 
3 | 
 | 
| 3021(i) | 
New | 
16.2.2 [networking.ts::buffer.reqmts.constbuffersequence] | 
[networking.ts] Relax pointer equivalence requirement for ConstBufferSequence | 
Yes | 
3 | 
 | 
| 3027(i) | 
New | 
16.2.4 [networking.ts::buffer.reqmts.dynamicbuffer] | 
[networking.ts] DynamicBuffer prepare exception specification | 
Yes | 
3 | 
 | 
| 3072(i) | 
New | 
16.2.4 [networking.ts::buffer.reqmts.dynamicbuffer] | 
[networking.ts] DynamicBuffer object lifetimes underspecified | 
Yes | 
3 | 
 | 
| 3073(i) | 
New | 
17 [networking.ts::buffer.stream] | 
[networking.ts] (async_)read and (async_)write 
don't support DynamicBuffer lvalues | 
Yes | 
3 | 
 | 
| 3445(i) | 
LEWG | 
19.2.1 [networking.ts::socket.iostream.cons] | 
[networking.ts] net::basic_socket_istream::connect should be constrained | 
Yes | 
3 | 
 |