| Issue |
Status |
Section |
Title |
Proposed Resolution |
Priority |
Duplicates |
| 3513 |
New |
3.43 [defns.prog.def.type] |
Fix definition of program-defined based on its uses |
Yes |
3 |
|
| 3669 |
New |
4.1.2 [intro.abstract] |
std::filesystem operations should be observable behaviour |
No |
3 |
|
| 2506 |
SG1 |
6.10.2 [intro.multithread] |
Underspecification of atomics |
No |
3 |
|
| 3105 |
New |
16 [library] |
T1 is convertible to T2 |
No |
3 |
|
| 2136 |
Open |
16.3.2 [structure] |
Postconditions vs. exceptions |
Yes |
3 |
|
| 3556 |
New |
16.3.2.3 [structure.requirements] |
Specification of when semantic constraints are imposed by use of concepts
is unclear |
No |
3 |
|
| 3193 |
New |
16.3.2.4 [structure.specifications] |
Mandates: and Expects: elements are not defined for types |
Yes |
3 |
|
| 3401 |
New |
16.3.2.4 [structure.specifications] |
Is "as if by" equivalent to "equivalent to"? |
No |
3 |
|
| 3092 |
Open |
16.3.3.3.3 [bitmask.types] |
Unclear semantics of enum class bitmask types |
Yes |
3 |
|
| 3977 |
New |
16.3.3.3.3 [bitmask.types] |
constexpr and noexcept for operators for bitmask types |
Yes |
3 |
|
| 3620 |
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 |
New |
16.4.2 [organization] |
C <foo.h> headers not in freestanding |
Yes |
3 |
|
| 3690 |
New |
16.4.2.2 [contents] |
std::make_from_tuple etc. should find all tuple-like std::get overloads |
Yes |
3 |
|
| 3240 |
New |
16.4.3.2 [using.headers] |
Headers declare more than entities |
No |
3 |
|
| 3640 |
New |
16.4.4 [utility.requirements] |
Clarify which exceptions are propagated |
Yes |
3 |
|
| 4075 |
SG1 |
16.4.4 [utility.requirements] |
Thread stability requirement on constructors and destructors |
No |
3 |
|
| 2146 |
Open |
16.4.4.2 [utility.arg.requirements] |
Are reference types CopyConstructible/MoveConstructible/CopyAssignable/MoveAssignable/Destructible? |
No |
3 |
|
| 2152 |
LEWG |
16.4.4.3 [swappable.requirements] |
Instances of standard container types are not swappable |
Yes |
3 |
|
| 4155 |
New |
16.4.4.4 [nullablepointer.requirements] |
Cpp17NullablePointer should require that some expression can be contextually converted to bool |
Yes |
3 |
|
| 3044 |
New |
16.4.4.6 [allocator.requirements] |
Strange specification of max_size() for an allocator |
Yes |
3 |
|
| 3157 |
New |
16.4.4.6 [allocator.requirements] |
Allocator destroy and fancy pointer operations must be non-throwing |
Yes |
3 |
|
| 2461 |
New |
16.4.4.6 [allocator.requirements] |
Interaction between allocators and container exception safety guarantees |
No |
3 |
|
| 4065 |
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 |
New |
16.4.4.6.1 [allocator.requirements.general] |
A Cpp17Allocator type can't silently ignore an unsupported alignment |
No |
3 |
|
| 4128 |
New |
16.4.4.6.1 [allocator.requirements.general] |
Allocator requirements should not allow rebinding conversions to be explicit |
Yes |
3 |
|
| 3928 |
New |
16.4.5.2.2 [namespace.posix] |
Non-top-level namespace posix shouldn't be reserved |
Yes |
3 |
|
| 3550 |
New |
16.4.5.3 [reserved.names] |
Names reserved by C for standard library not reserved by C++ |
No |
3 |
|
| 4033 |
New |
16.4.5.3.3 [macro.names] |
§[macro.names] defining macros after importing the standard library |
Yes |
3 |
|
| 3920 |
New |
16.4.5.3.4 [extern.names] |
Bad footnotes claiming external linkage for entities defined as macros |
No |
3 |
|
| 3142 |
New |
16.4.5.8 [res.on.functions] |
std::foo<incomplete> should be ill-formed NDR |
Yes |
3 |
|
| 3511 |
New |
16.4.5.9 [res.on.arguments] |
Clarify global permission to move |
Yes |
3 |
|
| 3429 |
New |
16.4.5.11 [res.on.requirements] |
"models" should subsume like "satisfies" |
Yes |
3 |
|
| 4100 |
New |
16.4.6.4 [global.functions] |
Default arguments and signatures of standard library non-member functions |
Yes |
3 |
|
| 2695 |
New |
16.4.6.5 [member.functions] |
"As if" unclear in [member.functions] |
No |
3 |
|
| 4306 |
New |
16.4.6.5 [member.functions] |
Interaction between LWG 2259 and Constraints of member functions |
No |
3 |
|
| 2414 |
Open |
16.4.6.9 [reentrancy] |
Member function reentrancy should be implementation-defined |
Yes |
3 |
|
| 4145 |
New |
16.4.6.10 [res.on.data.races] |
Unclear how [res.on.data.races] apply to templated functions |
No |
3 |
|
| 4252 |
New |
16.4.6.13 [derivation] |
Are exposition-only classes considered specified for the purpose of final? |
Yes |
3 |
|
| 3229 |
New |
16.4.6.14 [res.on.exception.handling] |
§[res.on.exception.handling]#3 cannot apply to types with implicitly declared destructors |
Yes |
3 |
|
| 3854 |
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 |
|
| 4182 |
New |
17.2.3 [support.types.nullptr] |
Definition of NULL is too broad |
Yes |
3 |
|
| 3217 |
New |
17.3.1 [support.limits.general] |
<memory> and <execution> should define __cpp_lib_parallel_algorithm |
Yes |
3 |
|
| 3931 |
New |
17.3.2 [version.syn] |
Too many paper bump __cpp_lib_ranges |
Yes |
3 |
|
| 2730 |
Open |
17.3.5 [numeric.limits] |
numeric_limits primary template definition |
No |
3 |
|
| 3923 |
New |
17.3.5.1 [numeric.limits.general] |
The specification of numeric_limits doesn't clearly distinguish between implementation requirements
and user requirements |
Yes |
3 |
|
| 3922 |
New |
17.3.5.1 [numeric.limits.general] |
It's unclear whether numeric_limits can be specialized by users |
Yes |
3 |
|
| 3370 |
New |
17.4.1 [cstdint.syn] |
§[cstdint.syn]p2 and §[headers]p5 are not sufficiently clear |
No |
3 |
|
| 2815 |
New |
17.5 [support.start.term] |
quick_exit can deadlock |
Yes |
3 |
|
| 3084 |
New |
17.5 [support.start.term] |
Termination in C++ is unclear |
No |
3 |
|
| 2737 |
New |
17.6.3.2 [new.delete.single] |
Consider relaxing object size restrictions for single-object allocation functions |
No |
3 |
|
| 3086 |
New |
17.6.3.2 [new.delete.single] |
Possible problem in §[new.delete.single] |
Yes |
3 |
|
| 2303 |
New |
17.6.3.4 [new.delete.placement] |
Explicit instantiation of std::vector<UserType> broken? |
No |
3 |
|
| 2508 |
New |
17.6.3.5 [new.delete.dataraces] |
§[new.delete.dataraces] wording needs to be updated |
No |
3 |
|
| 4130 |
Open |
17.6.5 [ptr.launder] |
Preconditions for std::launder might be overly strict |
Yes |
3 |
|
| 3624 |
New |
17.7 [support.rtti] |
Inconsistency of <typeinfo>, <initializer_list>, and
<compare> in the standard library |
Yes |
3 |
|
| 2398 |
Open |
17.7.3 [type.info] |
type_info's destructor shouldn't be required to be virtual |
Yes |
3 |
|
| 4087 |
SG16 |
17.9.3 [exception] |
Standard exception messages have unspecified encoding |
Yes |
3 |
|
| 2453 |
New |
17.11 [support.initlist] |
§[iterator.range] and now [iterator.container] aren't available via <initializer_list> |
No |
3 |
|
| 3584 |
New |
17.12.3 [cmp.common] |
Clarify common comparison category conversions |
Yes |
3 |
|
| 3587 |
New |
17.12.4 [cmp.concept] |
std::three_way_comparable_with<T, U, void> can be satisfied but can't be modeled |
No |
3 |
|
| 3491 |
New |
17.12.6 [cmp.alg] |
What is a "decayed type"? |
No |
3 |
|
| 3932 |
New |
17.12.6 [cmp.alg] |
Expression-equivalence is sometimes unimplementable when passing prvalue expressions to comparison CPOs |
No |
3 |
|
| 3653 |
New |
17.13.2 [coroutine.syn] |
<coroutine> is freestanding, but uses std::hash which is not |
No |
3 |
|
| 3945 |
New |
17.14.2 [cstdarg.syn] |
§[cstdarg.syn] 'Compatible types' are undefined |
No |
3 |
|
| 3954 |
New |
17.15.1 [support.c.headers.general] |
Feature-test macros in C headers (<stddef.h> etc.) |
No |
3 |
|
| 3484 |
New |
17.15.7 [support.c.headers.other] |
Should <stddef.h> declare ::nullptr_t? |
Yes |
3 |
|
| 3799 |
New |
17.15.7 [support.c.headers.other] |
Should <math.h> provide 3-argument ::hypot overloads? |
No |
3 |
|
| 3895 |
New |
18.3 [concepts.syn] |
Various relation concepts are missing default values of the second template parameters |
Yes |
3 |
|
| 3608 |
New |
18.4.4 [concept.convertible] |
convertible_to and temporary-bound references |
No |
3 |
|
| 3459 |
New |
18.4.4 [concept.convertible] |
Why doesn't std::convertible_to have semantic requirement when To is reference-to-function type? |
No |
3 |
|
| 4165 |
New |
18.4.9 [concept.swappable] |
Should swapping a built-in array or std::array with itself result in UB? |
No |
3 |
|
| 4156 |
SG16 |
19.5.3.2 [syserr.errcat.virtuals] |
error_category messages have unspecified encoding |
Yes |
3 |
|
| 3019 |
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 |
New |
19.5.4.1 [syserr.errcode.overview] |
Prohibit error_code construction from rvalues of error_category |
Yes |
3 |
|
| 3162 |
New |
19.5.8.2 [syserr.syserr.members] |
system_error::system_error(error_code ec) not explicit |
Yes |
3 |
|
| 3625 |
Open |
19.6.2 [stacktrace.syn] |
Should <stacktrace> provide range access function templates? |
Yes |
3 |
|
| 3626 |
New |
19.6.4.1 [stacktrace.basic.overview] |
Is std::basic_stacktrace required to use contiguous storage? |
Yes |
3 |
|
| 2421 |
New |
20.2.5 [ptr.align] |
Non-specification of handling zero size in std::align [ptr.align] |
No |
3 |
|
| 3192 |
New |
20.2.8.2 [allocator.uses.construction] |
§[allocator.uses.construction] functions misbehave for const types |
Yes |
3 |
|
| 3665 |
New |
20.2.9.2 [allocator.traits.types] |
Is std::allocator_traits<Alloc>::rebind_alloc SFINAE-friendly? |
No |
3 |
|
| 3917 |
New |
20.2.10 [default.allocator] |
Validity of allocator<void> and possibly polymorphic_allocator<void> should be clarified |
Yes |
3 |
|
| 3916 |
New |
20.2.10 [default.allocator] |
allocator, polymorphic_allocator, and containers should forbid cv-qualified types |
No |
3 |
|
| 3684 |
New |
20.2.10.2 [allocator.members] |
std::allocator<T>::allocate_at_least in constant evaluation |
Yes |
3 |
|
| 2262 |
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 |
New |
20.3.1.3 [unique.ptr.single] |
§[unique.ptr.single] requirements on deleter may be too strict |
No |
3 |
|
| 3911 |
New |
20.3.1.3.5 [unique.ptr.single.observers] |
unique_ptr's operator* is missing a mandate |
Yes |
3 |
|
| 2594 |
New |
20.3.2.2 [util.smartptr.shared] |
Contradicting definition of empty shared_ptr on shared_ptr(nullptr, d) |
Yes |
3 |
|
| 2906 |
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 |
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 |
|
| 3637 |
New |
20.5.2 [mem.res.class] |
pmr::memory_resource::do_allocate needs clarification |
No |
3 |
|
| 3634 |
New |
20.5.4 [mem.res.global] |
When are static-duration memory_resource objects destroyed? |
No |
3 |
|
| 2848 |
New |
20.5.5.2 [mem.res.pool.options] |
Pass-through threshold for pool allocator |
No |
3 |
|
| 2452 |
Core |
21 [meta] |
is_constructible, etc. and default arguments |
No |
3 |
|
| 2290 |
Open |
21 [meta] |
Top-level "SFINAE"-based constraints should get a separate definition in Clause 17 |
Yes |
3 |
|
| 2845 |
New |
21.3.2 [meta.rqmts] |
enable_if, result_of, common_type and aligned_storage do not meet the definition
of TransformationTrait |
No |
3 |
|
| 3697 |
New |
21.3.6.4 [meta.unary.prop] |
Preconditions of reference_constructs_from_temporary/reference_converts_from_temporary seem wrong |
Yes |
3 |
|
| 2116 |
Open |
21.3.6.4 [meta.unary.prop] |
is_nothrow_constructible and destructors |
No |
3 |
|
| 2827 |
New |
21.3.6.4 [meta.unary.prop] |
is_trivially_constructible and non-trivial destructors |
No |
3 |
|
| 2358 |
Open |
21.3.6.4 [meta.unary.prop] |
Apparently-bogus definition of is_empty type trait |
Yes |
3 |
|
| 3929 |
New |
21.3.6.4 [meta.unary.prop] |
Preconditions for type traits should be Mandates |
Yes |
3 |
|
| 2496 |
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 |
|
| 2077 |
Open |
21.3.6.4 [meta.unary.prop] |
Further incomplete constraints for type traits |
No |
3 |
|
| 3174 |
New |
21.3.8 [meta.rel] |
Precondition on is_convertible is too strong |
Yes |
3 |
|
| 3400 |
New |
21.3.8 [meta.rel] |
Does is_nothrow_convertible consider destruction of the destination type? |
No |
3 |
|
| 3205 |
New |
21.3.9.7 [meta.trans.other] |
decay_t in the new common_type fallback should be remove_cvref_t |
Yes |
3 |
|
| 4298 |
New |
21.4.12 [meta.reflection.extract] |
§[meta.reflection.extract] Malformed "F noexcept" type |
Yes |
3 |
|
| 2599 |
New |
22.2.6 [declval] |
Library incomplete type permission phrase is unclear |
No |
3 |
|
| 3342 |
New |
22.3.2 [pairs.pair] |
Library wording uses "initializes x with y", which is underspecified |
No |
3 |
|
| 2289 |
Open |
22.3.2 [pairs.pair] |
constexpr guarantees of defaulted functions still insufficient |
No |
3 |
|
| 2766 |
New |
22.3.3 [pairs.spec] |
Swapping non-swappable types |
Yes |
3 |
|
| 3166 |
New |
22.3.4 [pair.astuple] |
No such descriptive element as Value: |
No |
3 |
|
| 3378 |
New |
22.4.2 [tuple.syn] |
tuple_size_v/tuple_element_t should be available when tuple_size/tuple_element are |
Yes |
3 |
|
| 2528 |
New |
22.4.4.2 [tuple.cnstr] |
Order of std::tuple construction unspecified |
No |
3 |
|
| 3583 |
New |
22.4.4.2 [tuple.cnstr] |
Clarify if/when short circuiting applies to conditions in Constraints: elements |
No |
3 |
|
| 4040 |
New |
22.4.7 [tuple.helper] |
Contradictory specification of std::tuple_size |
No |
3 |
|
| 2472 |
New |
22.4.9 [tuple.rel] |
Heterogeneous comparisons in the standard library can result in ambiguities |
No |
3 |
|
| 3882 |
New |
22.4.9 [tuple.rel] |
tuple relational operators have confused friendships |
Yes |
3 |
|
| 2990 |
Open |
22.5.3 [optional.optional] |
optional::value_type is not always a value type |
Yes |
3 |
|
| 2811 |
New |
22.5.3.2 [optional.ctor] |
"Selected constructor" wording is incorrect for optional/variant/any |
Yes |
3 |
|
| 2746 |
New |
22.5.3.4 [optional.assign] |
Inconsistency between requirements for emplace between optional and variant |
Yes |
3 |
|
| 3424 |
New |
22.5.3.7 [optional.observe] |
optional::value_or should never return a cv-qualified type |
Yes |
3 |
|
| 3613 |
New |
22.5.5 [optional.nullopt] |
Specify that nullopt_t is copyable |
Yes |
3 |
|
| 3627 |
New |
22.5.10 [optional.specalg] |
Inconsistent specifications for std::make_optional overloads |
Yes |
3 |
|
| 2881 |
New |
22.6.3 [variant.variant] |
Adopt section III of P0308R0 |
No |
3 |
|
| 3069 |
New |
22.6.3.4 [variant.assign] |
Move assigning variant's subobject corrupts data |
Yes |
3 |
|
| 3991 |
New |
22.6.3.4 [variant.assign] |
variant's move assignment should not be guaranteed to produce a valueless by exception state |
Yes |
3 |
|
| 3416 |
New |
22.7.4 [any.class] |
The Throws: specification of std::any does not mention allocation |
No |
3 |
|
| 3423 |
New |
22.7.5 [any.nonmembers] |
std::any_cast should never return a cv-qualified type |
Yes |
3 |
|
| 4187 |
New |
22.9.2 [template.bitset] |
bitset::reference should be const-assignable |
Yes |
3 |
|
| 2348 |
Open |
22.9.2 [template.bitset] |
charT('1') is not the wide equivalent of '1' |
Yes |
3 |
|
| 4007 |
New |
22.10.4 [func.require] |
Mystic prohibition of calling a volatile-qualified perfect forwarding call wrapper |
Yes |
3 |
|
| 3046 |
New |
22.10.6 [refwrap] |
Do not require reference_wrapper to support non-referenceable function types |
Yes |
3 |
|
| 2547 |
New |
22.10.8 [comparisons] |
Container requirements (and other library text) should say "strict total order", not just "total order" |
No |
3 |
|
| 2491 |
New |
22.10.8 [comparisons] |
std::less<T*> in constant expression |
Yes |
3 |
|
| 3493 |
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 |
New |
22.10.17.4.3 [func.wrap.move.ctor] |
move_only_function assignment operators seem to be defined suboptimal |
Yes |
3 |
|
| 4127 |
New |
22.10.18.3 [func.search.bm] |
The Standard Library should not use predicates of the form pred(*i) != false |
Yes |
3 |
|
| 3512 |
New |
22.10.19 [unord.hash] |
Incorrect exception safety guarantee for unordered containers |
No |
3 |
|
| 3059 |
New |
23.2 [container.requirements] |
Wrong requirements for map-like associative container assignment? |
No |
3 |
|
| 1521 |
Open |
23.2.2 [container.requirements.general] |
Requirements on internal pointer representations in containers |
Yes |
3 |
|
| 2321 |
Open |
23.2.2 [container.requirements.general] |
Moving containers should (usually) be required to preserve iterators |
Yes |
3 |
|
| 3297 |
New |
23.2.4 [sequence.reqmts] |
Useless sequence container requirement |
Yes |
3 |
|
| 2705 |
New |
23.2.4 [sequence.reqmts] |
Questionable precondition on Sequence containers a.assign(n, t) |
Yes |
3 |
|
| 2206 |
Open |
23.2.4 [sequence.reqmts] |
Inaccuracy in initializer_list constructor requirements |
Yes |
3 |
|
| 4159 |
New |
23.2.5 [container.node] |
Uses-allocator construction mechanisms should be opted out for node handles |
Yes |
3 |
|
| 3438 |
New |
23.2.5.1 [container.node.overview] |
§[container.node.overview] missing multiset/map cases |
No |
3 |
|
| 2227 |
Open |
23.2.7 [associative.reqmts] |
Stateful comparison objects in associative containers |
No |
3 |
|
| 2844 |
Open |
23.2.7 [associative.reqmts] |
Stability of a_uniq.insert(i, j) |
No |
3 |
|
| 2362 |
New |
23.2.7 [associative.reqmts] |
unique, associative emplace() should not move/copy the mapped_type constructor
arguments when no insertion happens |
No |
3 |
|
| 3227 |
New |
23.2.7 [associative.reqmts] |
Ambiguity issue for extract in ordered and unordered associative containers |
Yes |
3 |
|
| 2215 |
Open |
23.2.7 [associative.reqmts] |
(unordered) associative container functors should be CopyConstructible |
Yes |
3 |
|
| 4132 |
New |
23.2.7.1 [associative.reqmts.general] |
Throws specifications need to include boolean-testable operations |
Yes |
3 |
|
| 3577 |
New |
23.2.7.1 [associative.reqmts.general] |
Merging an (unordered) associative container with itself |
No |
3 |
|
| 3691 |
New |
23.2.7.1 [associative.reqmts.general] |
Replacement of keys in associative containers |
Yes |
3 |
|
| 1175 |
Open |
23.2.8 [unord.req] |
unordered complexity |
Yes |
3 |
|
| 2198 |
Open |
23.2.8 [unord.req] |
max_load_factor(z) makes no strong guarantees, but bans useful behavior |
Yes |
3 |
|
| 2189 |
Open |
23.2.8.2 [unord.req.except] |
Throwing swap breaks unordered containers' state |
No |
3 |
|
| 617 |
Open |
23.3.3 [array] |
std::array is a sequence that doesn't satisfy the sequence requirements? |
No |
3 |
|
| 3219 |
New |
23.3.3.1 [array.overview] |
std::array overview container requirements are incorrect |
Yes |
3 |
|
| 2823 |
Open |
23.3.3.1 [array.overview] |
std::array initialization is still not permissive enough |
Yes |
3 |
|
| 3488 |
Open |
23.3.3.4 [array.special] |
Is array<const int, 0> swappable or not? |
Yes |
3 |
|
| 2157 |
Open |
23.3.3.5 [array.zero] |
How does std::array<T,0> initialization work when T is not default-constructible? |
Yes |
3 |
|
| 4123 |
New |
23.3.5.4 [deque.modifiers] |
Container effects use "the assignment operator or move assignment operator" |
Yes |
3 |
|
| 3308 |
New |
23.3.5.4 [deque.modifiers] |
vector and deque iterator erase invalidates elements even when no change occurs |
Yes |
3 |
|
| 1102 |
Open |
23.3.13.3 [vector.capacity] |
std::vector's reallocation policy still unclear |
Yes |
3 |
|
| 2158 |
Open |
23.3.13.3 [vector.capacity] |
Conditional copy/move in std::vector |
Yes |
3 |
|
| 3758 |
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 |
|
| 3638 |
New |
23.3.14 [vector.bool] |
vector<bool>::swap(reference, reference) is useless |
Yes |
3 |
|
| 1422 |
Open |
23.3.14 [vector.bool] |
vector<bool> iterators are not random access |
No |
3 |
|
| 3531 |
New |
23.4.3.1 [map.overview] |
LWG 3025 broke previous valid code |
Yes |
3 |
|
| 2713 |
New |
23.5 [unord] |
More missing allocator-extended constructors for unordered containers |
Yes |
3 |
|
| 3189 |
New |
23.6.4 [priority.queue] |
Missing requirement for std::priority_queue |
No |
3 |
|
| 3161 |
Open |
23.6.6 [stack] |
Container adapters mandate use of emplace_back but don't require it |
Yes |
3 |
|
| 3966 |
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 |
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 |
|
| 4000 |
New |
23.6.8.7 [flat.map.modifiers] |
flat_map::insert_range's Effects is not quite right |
Yes |
3 |
|
| 4180 |
New |
23.6.12.5 [flat.multiset.modifiers] |
Inconsistent constraints on flat_foo::emplace |
Yes |
3 |
|
| 3995 |
New |
23.7.3 [views.multidim] |
Issue with custom index conversion in <mdspan> |
No |
3 |
|
| 3952 |
New |
24.2 [iterator.synopsis] |
iter_common_reference_t does not conform to the definition of indirectly_readable |
Yes |
3 |
|
| 4080 |
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 |
New |
24.3.2.1 [incrementable.traits] |
The last specialization of incrementable_traits is under-constrained |
Yes |
3 |
|
| 3615 |
New |
24.3.2.1 [incrementable.traits] |
The last specialization of incrementable_traits has wrong operand types |
Yes |
3 |
|
| 3287 |
New |
24.3.2.3 [iterator.traits] |
Exposition-only cpp17-input-iterator concept is needlessly complex |
Yes |
3 |
|
| 3890 |
New |
24.3.4.4 [iterator.concept.winc] |
ABI issue for integer-class types |
Yes |
3 |
|
| 3716 |
New |
24.3.4.11 [iterator.concept.forward] |
§[iterator.concept.forward][forward.iterators] Two different definitions of multi-pass guarantee |
No |
3 |
|
| 484 |
Open |
24.3.5.3 [input.iterators] |
Convertible to T |
No |
3 |
|
| 2038 |
Open |
24.3.5.4 [output.iterators] |
Missing definition for incrementable iterator |
No |
3 |
|
| 2035 |
Open |
24.3.5.4 [output.iterators] |
Output iterator requirements are broken |
Yes |
3 |
|
| 2931 |
Open |
24.4.3 [iterator.operations] |
Missed optimization opportunity with single-argument std::next |
No |
3 |
|
| 3344 |
New |
24.4.3 [iterator.operations] |
advance(i, most-negative) and prev(i, most-negative) |
Yes |
3 |
|
| 3197 |
New |
24.4.3 [iterator.operations] |
std::prev should not require BidirectionalIterator |
Yes |
3 |
|
| 3439 |
New |
24.4.3 [iterator.operations] |
"Distance" template parameter is underspecified |
No |
3 |
|
| 3623 |
New |
24.5.1.1 [reverse.iterators.general] |
Uses of std::reverse_iterator with containers should not require manually including <iterator> |
Yes |
3 |
|
| 2595 |
New |
24.5.1.2 [reverse.iterator] |
reverse_iterator::operator[]'s return type revisited |
Yes |
3 |
|
| 3602 |
New |
24.5.1.4 [reverse.iter.cons] |
reverse_iterator's converting assignment is overconstrained |
Yes |
3 |
|
| 3725 |
New |
24.5.1.6 [reverse.iter.elem] |
reverse_iterator::operator-> should not use prev for non-pointer iterators |
Yes |
3 |
|
| 3986 |
New |
24.5.3 [const.iterators] |
basic_const_iterator doesn't work with optional |
No |
3 |
|
| 3988 |
Open |
24.5.3 [const.iterators] |
Should as_const_view and basic_const_iterator provide base()? |
Yes |
3 |
|
| 4237 |
New |
24.5.3.3 [const.iterators.iterator] |
The standard library iterator adaptor does not handle iterator_category correctly |
No |
3 |
|
| 4125 |
New |
24.5.4.2 [move.iterator] |
move_iterator's default constructor should be constrained |
Yes |
3 |
|
| 4120 |
New |
24.5.4.2 [move.iterator] |
move_iterator should provide iterator_category only when it models
forward_iterator |
Yes |
3 |
|
| 4092 |
New |
24.5.5.1 [common.iterator] |
The monotonic version of common_iterator::operator== is underconstrained |
Yes |
3 |
|
| 3783 |
New |
24.5.5.1 [common.iterator] |
views::common may not be a range adaptor object |
Yes |
3 |
|
| 3748 |
New |
24.5.5.6 [common.iter.cmp] |
common_iterator and counted_iterator' operator- are missing cast to return type |
Yes |
3 |
|
| 2366 |
New |
24.6.4 [istreambuf.iterator] |
istreambuf_iterator end-of-stream equality |
Yes |
3 |
|
| 3188 |
New |
24.6.4 [istreambuf.iterator] |
istreambuf_iterator::pointer should not be unspecified |
Yes |
3 |
|
| 3108 |
New |
24.6.4.2 [istreambuf.iterator.proxy] |
istreambuf_iterator::proxy::operator* should be const |
Yes |
3 |
|
| 4181 |
New |
24.7 [iterator.range] |
Some ranges have negative ssize |
No |
3 |
|
| 4131 |
New |
24.7 [iterator.range] |
Including <optional> doesn't provide std::begin/end |
Yes |
3 |
|
| 3537 |
New |
24.7 [iterator.range] |
§[iterator.range] Missing noexcept for std::rbegin/rend for arrays and
initializer_list |
No |
3 |
|
| 4010 |
New |
25.5.4.3 [range.subrange.access] |
subrange::advance should be improved |
Yes |
3 |
|
| 3985 |
New |
25.5.7.2 [range.utility.conv.to] |
ranges::to should Mandates C not to be view |
Yes |
3 |
|
| 4008 |
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 |
New |
25.5.7.2 [range.utility.conv.to] |
ranges::to's copy branch is underconstrained |
Yes |
3 |
|
| 3983 |
New |
25.5.7.3 [range.utility.conv.adaptors] |
ranges::to adaptors are underconstrained |
Yes |
3 |
|
| 3907 |
New |
25.6 [range.factories] |
Can iterator types of range adaptors and range factories be SCARY? |
No |
3 |
|
| 3614 |
New |
25.6.4.2 [range.iota.view] |
iota_view::size and the most negative signed integer values |
Yes |
3 |
|
| 4002 |
New |
25.6.4.3 [range.iota.iterator] |
The definition of iota_view::iterator::iterator_concept should be improved |
Yes |
3 |
|
| 3846 |
New |
25.6.4.3 [range.iota.iterator] |
iota_view::iterator::operator- is overconstrained |
Yes |
3 |
|
| 3609 |
New |
25.6.4.4 [range.iota.sentinel] |
std::ranges::iota_view<int, long> has non-subtractable iterator and
sentinel types |
Yes |
3 |
|
| 3955 |
New |
25.6.5.2 [range.repeat.view] |
Add noexcept to several repeat_view[::iterator] member functions |
Yes |
3 |
|
| 3763 |
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 |
LEWG |
25.6.6 [range.istream] |
Is <ranges> sufficient for istream_view? |
No |
3 |
|
| 3489 |
New |
25.6.6.3 [range.istream.iterator] |
Improve istream_view wording |
Yes |
3 |
|
| 3829 |
New |
25.7.7.2 [range.as.rvalue.view] |
as_rvalue_view::end should improve non-common case |
Yes |
3 |
|
| 3730 |
New |
25.7.12.2 [range.drop.view] |
std::ranges::drop_view may have different size type from its underlying view |
Yes |
3 |
|
| 3873 |
New |
25.7.15.2 [range.join.with.view] |
join_with_view's const begin is underconstrained |
No |
3 |
|
| 4059 |
New |
25.7.15.3 [range.join.with.iterator] |
Leaky abstraction in join_with_view's iterator |
Yes |
3 |
|
| 3852 |
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 |
|
| 3685 |
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 |
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 |
|
| 3686 |
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 |
New |
25.7.17.3 [range.split.iterator] |
Behavior of std::views::split on an empty range |
Yes |
3 |
|
| 4081 |
New |
25.7.18.3 [range.concat.iterator] |
concat_view::iterator::operator- is overconstrained |
Yes |
3 |
|
| 4089 |
New |
25.7.18.3 [range.concat.iterator] |
concat_view::iterator's iter_swap is overconstrained |
Yes |
3 |
|
| 4019 |
SG9 |
25.7.21 [range.reverse] |
Reversing an infinite range leads to an infinite loop |
No |
3 |
|
| 4097 |
LEWG |
25.7.21.1 [range.reverse.overview] |
views::reverse should be specialized for some view types |
Yes |
3 |
|
| 3830 |
New |
25.7.21.2 [range.reverse.view] |
reverse_view should not cache when ranges::next has constant time complexity |
Yes |
3 |
|
| 4114 |
New |
25.7.23.3 [range.elements.iterator] |
elements_view::iterator::operator* missing conditional noexcept specification |
Yes |
3 |
|
| 3832 |
New |
25.7.23.3 [range.elements.iterator] |
Missing change for element_view::iterator in LWG 3798 |
Yes |
3 |
|
| 3731 |
New |
25.7.25.2 [range.zip.view] |
zip_view and adjacent_view are underconstrained |
Yes |
3 |
|
| 4210 |
New |
25.7.34.3 [range.cache.latest.iterator] |
Issue with cache_latest_view::iterator's reference type |
No |
3 |
|
| 4057 |
New |
25.8.6 [coro.generator.iterator] |
generator::iterator's operator* is not noexcept when it can be |
Yes |
3 |
|
| 2963 |
New |
26 [algorithms] |
Algorithms with underspecified iterator requirements |
No |
3 |
|
| 1238 |
Open |
26 [algorithms] |
Defining algorithms taking iterator for range |
No |
3 |
|
| 3049 |
Open |
26.2 [algorithms.requirements] |
Missing wording allowing algorithms to use copies of function objects as substitutes for their parameters |
Yes |
3 |
|
| 3793 |
New |
26.6.5 [alg.foreach] |
Requirements for some algorithms' Size template parameters are unclear |
No |
3 |
|
| 4093 |
New |
26.6.18 [alg.fold] |
ranges::fold_left_first_with_iter incorrectly constructs optional<U> |
Yes |
3 |
|
| 4094 |
New |
26.6.18 [alg.fold] |
ranges::fold_meow is overconstrained |
Yes |
3 |
|
| 3969 |
New |
26.6.18 [alg.fold] |
std::ranges::fold_left_first_with_iter should be more ADL-proof |
Yes |
3 |
|
| 3089 |
New |
26.7.1 [alg.copy] |
copy_n should require non-overlapping ranges |
Yes |
3 |
|
| 2471 |
Open |
26.7.1 [alg.copy] |
copy_n's number of InputIterator increments unspecified |
No |
3 |
|
| 4103 |
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 |
New |
26.8.2.4 [partial.sort.copy] |
partial_sort_copy underspecified for ranges of two different types |
No |
3 |
|
| 4162 |
New |
26.8.3 [alg.nth.element] |
Worst time complexity of non-parallel versions of nth_element is underspecified |
Yes |
3 |
|
| 4111 |
New |
26.8.4 [alg.binary.search] |
LWG 270 and ranges version of binary search algorithms |
No |
3 |
|
| 3534 |
LEWG |
26.8.7.4 [set.intersection] |
ranges::set_intersection and ranges::set_difference algorithm requirements are too strict |
Yes |
3 |
|
| 3029 |
Open |
26.8.8.3 [pop.heap] |
pop_heap over-constrains input |
Yes |
3 |
|
| 4167 |
New |
26.8.9 [alg.min.max] |
Use of "smaller" and "larger" in min,
max, and minmax is unclear |
Yes |
3 |
|
| 3487 |
New |
26.10 [numeric.ops] |
Missing precondition on input and output aliasing of [numeric.ops] |
No |
3 |
|
| 3463 |
New |
26.10.11 [transform.inclusive.scan] |
Incorrect requirements for transform_inclusive_scan without initial value |
Yes |
3 |
|
| 3628 |
New |
26.11 [specialized.algorithms] |
"Effects: Equivalent to:" and uninitialized memory algorithms |
No |
3 |
|
| 3063 |
New |
26.11 [specialized.algorithms] |
Parallel algorithms in <memory> are underspecified |
No |
3 |
|
| 3647 |
New |
26.11.2 [special.mem.concepts] |
nothrow-input-iterator constraints should not mention copying |
Yes |
3 |
|
| 3888 |
New |
26.11.8 [specialized.construct] |
Most ranges uninitialized memory algorithms are underconstrained |
Yes |
3 |
|
| 3889 |
New |
26.11.9 [specialized.destroy] |
std::(ranges::)destroy_at should destroy array elements in the decreasing index order |
Yes |
3 |
|
| 3942 |
New |
27.2.4 [char.traits.specializations] |
Inconsistent use of const char_type& in standard specializations of std::char_traits |
Yes |
3 |
|
| 2959 |
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 |
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 |
|
| 3457 |
New |
27.3.3 [string.view.template] |
*this is not invalidated |
Yes |
3 |
|
| 3339 |
New |
27.4.3 [basic.string] |
Move-constructed empty-container capacity |
No |
3 |
|
| 3451 |
New |
27.4.3 [basic.string] |
Inconsistently explicit deduction guides |
Yes |
3 |
|
| 4029 |
New |
27.4.3.1 [basic.string.general] |
basic_string accidentally fails to meet the reversible container requirements |
Yes |
3 |
|
| 3663 |
New |
27.4.3.3 [string.cons] |
basic_string(const T&, const Alloc&) turns moves into copies |
Yes |
3 |
|
| 3662 |
New |
27.4.3.7.2 [string.append] |
basic_string::append/assign(NTBS, pos, n) suboptimal |
Yes |
3 |
|
| 3837 |
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 |
|
| 2238 |
Open |
27.5 [c.strings] |
Problematic iterator-pair constructor of containers |
No |
3 |
|
| 3456 |
New |
28.2.3 [charconv.from.chars] |
Pattern used by std::from_chars is underspecified |
Yes |
3 |
|
| 3353 |
New |
28.3.3.1 [locale] |
locale's copy assignment operator should return locale& |
Yes |
3 |
|
| 3337 |
New |
28.3.4.2.5.3 [locale.codecvt.virtuals] |
What is "is initialized" supposed to mean? |
No |
3 |
|
| 3689 |
New |
28.3.4.3.2.3 [facet.num.get.virtuals] |
num_get overflow determination unclear and incorrect |
No |
3 |
|
| 2117 |
Open |
28.3.4.3.3.3 [facet.num.put.virtuals] |
ios_base manipulators should have showgrouping/noshowgrouping |
No |
3 |
|
| 2703 |
New |
28.3.4.3.3.3 [facet.num.put.virtuals] |
No provision for fill-padding when boolalpha is set |
No |
3 |
|
| 4216 |
New |
28.3.4.3.3.3 [facet.num.put.virtuals] |
num_put::do_put and void pointers |
Yes |
3 |
|
| 2702 |
New |
28.3.4.3.3.3 [facet.num.put.virtuals] |
num_put::do_put(..., bool) performs ill-formed do_put call |
No |
3 |
|
| 3275 |
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 |
|
| 2983 |
New |
28.3.4.7.3.3 [locale.money.put.virtuals] |
money_put::do_put underspecified |
Yes |
3 |
|
| 2691 |
New |
28.3.4.7.4 [locale.moneypunct] |
money_base::space and do_put: U+0020 versus fill |
Yes |
3 |
|
| 3651 |
New |
28.5 [format] |
Unspecified lifetime guarantees for the format string |
No |
3 |
|
| 3641 |
New |
28.5.1 [format.syn] |
Add operator== to format_to_n_result |
Yes |
3 |
|
| 3939 |
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 |
|
| 4090 |
Open |
28.5.2.2 [format.string.std] |
Underspecified use of locale facets for locale-dependent std::format |
Yes |
3 |
|
| 3993 |
New |
28.5.6.1 [formatter.requirements] |
The parse function of a BasicFormatter type needs to be constexpr |
Yes |
3 |
|
| 3943 |
New |
28.5.6.3 [format.formattable] |
Clarify lifetime requirements of BasicFormatter and Formatter |
Yes |
3 |
|
| 3706 |
New |
28.5.6.4 [format.formatter.spec] |
How does std::format work with character arrays of unknown bound? |
No |
3 |
|
| 4107 |
New |
28.5.7.4 [format.range.fmtmap] |
Map formatter may conflict with user-defined specializations of pair/tuple formatters |
Yes |
3 |
|
| 2490 |
New |
28.6 [re] |
<regex> needs lots of noexcept |
No |
3 |
|
| 3606 |
New |
28.6.2 [re.req] |
Missing regex_traits::locale_type requirements |
No |
3 |
|
| 2431 |
New |
28.6.2 [re.req] |
Missing regular expression traits requirements |
No |
3 |
|
| 3998 |
New |
28.6.4 [re.const] |
Constants in std::regex_constants should be allowed to be enumerators |
No |
3 |
|
| 2331 |
Open |
28.6.4.2 [re.synopt] |
regex_constants::collate's effects are inaccurately summarized |
Yes |
3 |
|
| 3605 |
New |
28.6.4.3 [re.matchflag] |
regex_constants::match_prev_avail is underspecified |
No |
3 |
|
| 2338 |
Open |
28.6.6 [re.traits] |
§[re.traits]/7 expects of locale facets something not guaranteed by [locale.facet]/4 |
Yes |
3 |
|
| 3261 |
New |
28.6.7 [re.regex] |
regex components' noexcept annotations appear broken for POCMA or throwing
BidirectionalIterator |
No |
3 |
|
| 3604 |
New |
28.6.7.2 [re.regex.construct] |
What is the effect of an invalid value of type syntax_option_type? |
No |
3 |
|
| 3341 |
New |
28.6.7.2 [re.regex.construct] |
basic_regex range constructor: Missing requirements for iterator types |
No |
3 |
|
| 3603 |
New |
28.6.7.2 [re.regex.construct] |
Matching of null characters by regular expressions is underspecified |
No |
3 |
|
| 2137 |
Open |
28.6.7.3 [re.regex.assign] |
Misleadingly constrained post-condition in the presence of exceptions |
Yes |
3 |
|
| 3126 |
New |
28.6.8 [re.submatch] |
There's no std::sub_match::compare(string_view) overload |
Yes |
3 |
|
| 2216 |
New |
28.6.10.4 [re.alg.replace] |
regex_replace(basic_string) allocator handling |
No |
3 |
|
| 2220 |
Open |
28.6.11.2.3 [re.tokiter.comp] |
Under-specification of operator== for regex_token_iterator |
Yes |
3 |
|
| 2987 |
New |
28.6.12 [re.grammar] |
Relationship between traits_inst.lookup_collatename and the regex FSM is underspecified with
regards to ClassAtomCollatingElement |
No |
3 |
|
| 4161 |
New |
29.4 [complex.numbers] |
Some free functions don't automatically work for program-defined std::complex<NonFloatingPoint> |
No |
3 |
|
| 3934 |
New |
29.4.3 [complex] |
std::complex<T>::operator=(const T&) has no specification |
Yes |
3 |
|
| 2714 |
New |
29.4.6 [complex.ops] |
complex stream extraction underspecified |
Yes |
3 |
|
| 2846 |
New |
29.4.10 [cmplx.over] |
Undefined phrase "effectively cast" |
Yes |
3 |
|
| 4289 |
LEWG |
29.5.3.2 [rand.req.seedseq] |
Seed sequence is overspecified |
Yes |
3 |
|
| 4212 |
New |
29.5.4.5 [rand.eng.philox] |
Make the round states in [rand.eng.philox] explicit |
Yes |
3 |
|
| 3402 |
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 |
|
| 2847 |
New |
29.7.1 [cmath.syn] |
sin(float) should call sinf(float) |
No |
3 |
|
| 3093 |
New |
29.7.2 [c.math.abs] |
LWG 2294/2192 missed a std::abs overload |
No |
3 |
|
| 3172 |
New |
29.7.3 [c.math.hypot3] |
3-arg std::hypot is underspecified compared to the 2-arg overload |
Yes |
3 |
|
| 3066 |
New |
29.7.6 [sf.cmath] |
"report a domain error" in [sf.cmath]/1 is underspecified |
No |
3 |
|
| 4185 |
New |
29.9.7 [linalg.helpers] |
Ill-formed, no diagnostic required on runtime behavior |
No |
3 |
|
| 3090 |
New |
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 |
New |
30.5.8 [time.duration.cast] |
chrono::ceil has surprising requirement |
Yes |
3 |
|
| 2383 |
Open |
30.5.9 [time.duration.literals] |
Overflow cannot be ill-formed for chrono::duration integer literals |
No |
3 |
|
| 4288 |
New |
30.7.2.2 [time.clock.system.members] |
The Constraints: element in [time.clock.system.members] is probably wrong |
Yes |
3 |
|
| 4193 |
New |
30.11.2 [time.zone.db] |
§[time.zone.db] the specification uses the undefined term "thread-safe" |
No |
3 |
|
| 4067 |
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 |
New |
30.11.8 [time.zone.leap] |
§[time.zone.leap] recursive constraint in <=> |
No |
3 |
|
| 3831 |
New |
30.12 [time.format] |
Two-digit formatting of negative year is ambiguous |
Yes |
3 |
|
| 4118 |
New |
30.12 [time.format] |
How should duration formatters format custom rep types? |
Yes |
3 |
|
| 3856 |
New |
30.12 [time.format] |
Unclear which conversion specifiers are valid for each chrono type |
Yes |
3 |
|
| 3921 |
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 |
Open |
30.12 [time.format] |
Non-numeric formats for negative durations |
Yes |
3 |
|
| 3962 |
New |
30.13 [time.parse] |
What is the "decimal precision of the input"? |
Yes |
3 |
|
| 3960 |
New |
30.13 [time.parse] |
How does chrono::parse handle duplicated data? |
Yes |
3 |
|
| 3961 |
New |
30.13 [time.parse] |
Does chrono::parse check format strings? |
Yes |
3 |
|
| 423 |
Open |
31 [input.output] |
Effects of negative streamsize in iostreams |
Yes |
3 |
|
| 3696 |
New |
31.2.2 [stream.types] |
"Basic integral types" should not be used |
Yes |
3 |
|
| 2675 |
New |
31.5.2.7 [ios.base.callback] |
register_callback can fail |
No |
3 |
|
| 4192 |
New |
31.5.2.8 [ios.base.cons] |
§[ios.base.cons] ios_base members may not have indeterminate values after construction |
Yes |
3 |
|
| 2504 |
New |
31.6.3 [streambuf] |
basic_streambuf is not an abstract class |
No |
3 |
|
| 3658 |
New |
31.6.3.3.5 [streambuf.pub.put] |
basic_streambuf::sputn is both overspecified and underspecified |
Yes |
3 |
|
| 2497 |
New |
31.7.6.2.4 [ostream.sentry] |
Use of uncaught_exception() |
Yes |
3 |
|
| 4101 |
New |
31.7.6.3.2 [ostream.inserters.arithmetic] |
LWG 117 loses the sign for negative NaN on some architectures |
Yes |
3 |
|
| 3501 |
New |
31.7.6.5 [ostream.manip] |
basic_syncbuf-related manipulators refer to some Allocator without defining it |
Yes |
3 |
|
| 3937 |
New |
31.7.7 [std.manip] |
I/O manipulators should be specified in terms of base classes |
No |
3 |
|
| 2984 |
New |
31.7.8 [ext.manip] |
put_money(99) is unnecessarily undefined |
Yes |
3 |
|
| 3309 |
New |
31.8 [string.streams] |
Is <ios> implicitly #included by <sstream>, <fstream> etc.? |
No |
3 |
|
| 3097 |
New |
31.8.2.5 [stringbuf.virtuals] |
basic_stringbuf seekoff effects trigger undefined behavior and have contradictory returns |
No |
3 |
|
| 3497 |
New |
31.11.2.4 [syncstream.syncbuf.members] |
Postconditions for basic_syncbuf::emit() |
No |
3 |
|
| 3496 |
New |
31.11.2.4 [syncstream.syncbuf.members] |
What does "uniquely associated" mean for basic_syncbuf::emit()? |
No |
3 |
|
| 3098 |
New |
31.12.6.5.9 [fs.path.decompose] |
Misleading example for filesystem::path::filename() |
Yes |
3 |
|
| 3699 |
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 |
New |
31.12.6.6 [fs.path.itr] |
std::filesystem::path::iterator::reference should be allowed to be std::filesystem::path |
Yes |
3 |
|
| 2947 |
New |
31.12.8.1 [fs.enum.path.format] |
Clarify several filesystem terms |
No |
3 |
|
| 3078 |
New |
31.12.10 [fs.class.directory.entry] |
directory_entry, directory_iterator and recursive_directory_iterator perform needless path copies |
No |
3 |
|
| 3668 |
New |
31.12.11.2 [fs.dir.itr.members] |
[recursive_]directory_iterator constructors refer to undefined options |
Yes |
3 |
|
| 3056 |
New |
31.12.13.5 [fs.op.copy.file] |
copy_file() copies which attributes? |
Yes |
3 |
|
| 3744 |
New |
31.12.13.6 [fs.op.copy.symlink] |
copy_symlink(junction, new_symlink)'s behavior is unclear |
No |
3 |
|
| 2819 |
New |
32.2.5 [thread.req.lockable] |
Unspecified Return type: elements |
Yes |
3 |
|
| 3499 |
New |
32.2.5.4 [thread.req.lockable.timed] |
Timed lockable and mutex requirements are imprecise about duration and time_point |
No |
3 |
|
| 3924 |
New |
32.3.1 [thread.stoptoken.intro] |
Stop token data race avoidance requirements unclear |
Yes |
3 |
|
| 3516 |
New |
32.4.3.2 [thread.thread.id] |
thread::id spaceship may be inconsistent with equality |
Yes |
3 |
|
| 3475 |
New |
32.4.3.3 [thread.thread.constr] |
std::thread's constructor needs to be able to report general memory allocation failures |
Yes |
3 |
|
| 3633 |
New |
32.5 [atomics] |
Atomics are copy constructible and copy assignable from volatile atomics |
Yes |
3 |
|
| 3220 |
New |
32.5.2 [atomics.syn] |
P0558 broke conforming C++14 uses of atomic shared_ptr |
Yes |
3 |
|
| 4004 |
SG1 |
32.5.4 [atomics.order] |
The load and store operation in §[atomics.order] p1 is ambiguous |
No |
3 |
|
| 4174 |
SG1 |
32.5.4 [atomics.order] |
How does [atomics.order] p3 apply when then modification is an initialization? |
No |
3 |
|
| 3941 |
Open |
32.5.4 [atomics.order] |
§[atomics.order] inadvertently prohibits widespread implementation techniques |
No |
3 |
|
| 3263 |
New |
32.5.6 [atomics.wait] |
Atomic waiting function calls should only be unblocked once |
Yes |
3 |
|
| 3409 |
New |
32.5.7.2 [atomics.ref.ops] |
Too lax description of atomic_ref<T>::required_alignment |
Yes |
3 |
|
| 3417 |
SG1 |
32.5.8.2 [atomics.types.operations] |
Missing volatile atomic deprecations |
Yes |
3 |
|
| 3047 |
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 |
|
| 3906 |
New |
32.5.8.5 [atomics.types.pointer] |
"Undefined address" is undefined |
No |
3 |
|
| 3418 |
New |
32.5.9 [atomics.nonmembers] |
Deprecated free functions in <atomic> |
Yes |
3 |
|
| 3343 |
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 |
|
| 3504 |
New |
32.7.4 [thread.condition.condvar] |
condition_variable::wait_for is overspecified |
Yes |
3 |
|
| 3898 |
New |
32.9.3.3 [thread.barrier.class] |
Possibly unintended preconditions for completion functions of std::barrier |
Yes |
3 |
|
| 2530 |
Open |
32.10.5 [futures.state] |
Clarify observable side effects of releasing a shared state |
No |
3 |
|
| 2532 |
Open |
32.10.6 [futures.promise] |
Satisfying a promise at thread exit |
Yes |
3 |
|
| 3582 |
New |
32.10.9 [futures.async] |
Unclear where std::async exceptions are handled |
Yes |
3 |
|
| 4160 |
New |
32.10.10.1 [futures.task.general] |
packaged_task should reject rvalue reference return types |
Yes |
3 |
|
| 4158 |
New |
32.10.10.2 [futures.task.members] |
packaged_task::operator= should abandon its shared state |
Yes |
3 |
|
| 2507 |
New |
99 [depr.locale.stdcvt] |
codecvt_mode should be a bitmask type |
No |
3 |
|
| 3840 |
Open |
D.22.1 [depr.fs.path.factory] |
filesystem::u8path should be undeprecated |
Yes |
3 |
|
| 3812 |
New |
6.1.2.6 [fund.ts.v3::propagate_const.const_observers] |
[fund.ts.v3] Incorrect constraint on propagate_const conversion function |
Yes |
3 |
|
| 3167 |
Open |
8.2 [fund.ts.v3::memory.observer.ptr] |
[fund.ts.v3] Does observer_ptr support function types? |
No |
3 |
|
| 3357 |
Open |
99 [fund.ts.v3::rand.util.randint] |
[fund.ts.v3] default_random_engine is overspecified for per-thread engine |
Yes |
3 |
|
| 3124 |
New |
13.7.5 [networking.ts::async.exec.ctx.globals] |
[networking.ts] Unclear how execution_context is intended to store services |
Yes |
3 |
|
| 3021 |
New |
16.2.2 [networking.ts::buffer.reqmts.constbuffersequence] |
[networking.ts] Relax pointer equivalence requirement for ConstBufferSequence |
Yes |
3 |
|
| 3027 |
New |
16.2.4 [networking.ts::buffer.reqmts.dynamicbuffer] |
[networking.ts] DynamicBuffer prepare exception specification |
Yes |
3 |
|
| 3072 |
New |
16.2.4 [networking.ts::buffer.reqmts.dynamicbuffer] |
[networking.ts] DynamicBuffer object lifetimes underspecified |
Yes |
3 |
|
| 3073 |
New |
17 [networking.ts::buffer.stream] |
[networking.ts] (async_)read and (async_)write
don't support DynamicBuffer lvalues |
Yes |
3 |
|
| 3445 |
LEWG |
19.2.1 [networking.ts::socket.iostream.cons] |
[networking.ts] net::basic_socket_istream::connect should be constrained |
Yes |
3 |
|
| Issue |
Status |
Section |
Title |
Proposed Resolution |
Priority |
Duplicates |
| 4317 |
New |
16.4.4.2 [utility.arg.requirements] |
The meaning of "resource" in the Cpp17Destructible requirements is undefined |
Yes |
|
|
| 4296 |
New |
16.4.4.5 [hash.requirements] |
Clarify that Cpp17Hash does not imply stateless |
No |
|
|
| 4258 |
New |
16.4.4.6.1 [allocator.requirements.general] |
Size type mismatch in constraints involving Cpp17Allocator |
No |
|
|
| 4149 |
New |
16.4.5.3.3 [macro.names] |
User defined macros without standard headers (294 redux) |
Yes |
|
|
| 4068 |
New |
16.4.5.11 [res.on.requirements] |
Terminology for objects whose types model a concept |
No |
|
|
| 4129 |
New |
16.4.6.10 [res.on.data.races] |
Possibly incorrect wording for data race avoidance |
Yes |
|
|
| 4286 |
New |
17.3.2 [version.syn] |
Some more feature-test macros for fully freestanding features are not marked freestanding |
Yes |
|
|
| 4207 |
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 |
|
|
| 4051 |
New |
17.12.2 [cmp.categories] |
A less hacky and more useful way to compare comparison category types |
Yes |
|
|
| 4305 |
New |
17.12.7 [compare.type] |
Missing user requirements on type_order template |
Yes |
|
|
| 4388 |
New |
17.14.2 [cstdarg.syn] |
Align new definition of va_start with C23 |
Yes |
|
|
| 3454 |
Open |
20.2.3 [pointer.traits] |
pointer_traits::pointer_to should be constexpr |
Yes |
|
|
| 4058 |
New |
20.2.4 [pointer.conversion] |
std::to_address() should be SFINAE-friendly |
Yes |
|
|
| 4290 |
New |
20.2.5 [ptr.align] |
Missing Mandates clauses on is_sufficiently_aligned |
Yes |
|
|
| 4168 |
New |
20.2.6 [obj.lifetime] |
std::start_lifetime_as inadvertently has undefined behavior due to use of std::bit_cast |
Yes |
|
|
| 4282 |
New |
20.2.6 [obj.lifetime] |
Imprecise Throws: clause in std::relocate |
Yes |
|
|
| 4283 |
New |
20.2.6 [obj.lifetime] |
std::trivially_relocate needs stronger preconditions on "nested" objects with dynamic lifetime |
Yes |
|
|
| 4312 |
New |
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 |
|
|
| 4324 |
New |
20.3.1.3.5 [unique.ptr.single.observers] |
unique_ptr<void>::operator* is not SFINAE-friendly |
Yes |
|
|
| 4110 |
New |
20.3.2.2.2 [util.smartptr.shared.const] |
shared_ptr(nullptr_t, Deleter) is overconstrained, breaking some sensible deleters |
Yes |
|
|
| 4250 |
New |
20.4.1.7 [indirect.swap] |
swap overloads for indirect and polymorphic only found by ADL |
Yes |
|
|
| 4325 |
New |
20.4.1.8 [indirect.relops] |
std::indirect's operator== still does not support incomplete types |
Yes |
|
|
| 4311 |
New |
20.5.3.3 [mem.poly.allocator.mem] |
Can std::pmr::polymorphic_allocator::construct just call std::uninitialized_construct_using_allocator? |
Yes |
|
|
| 2922 |
LEWG |
21.3.3 [meta.type.synop] |
The *_constant<> templates do not make use of template<auto> |
No |
|
|
| 4383 |
New |
21.3.5 [const.wrap.class] |
constant_wrapper's pseudo-mutators are underconstrained
|
Yes |
|
|
| 3486 |
LEWG |
21.3.6.4 [meta.unary.prop] |
is_constructible<T[], T...> may be misleading in C++20 |
No |
|
|
| 3967 |
New |
21.3.6.4 [meta.unary.prop] |
The specification for std::is_nothrow_* traits may be ambiguous in some cases involving noexcept(false) |
No |
|
|
| 4028 |
New |
21.3.8 [meta.rel] |
std::is_(nothrow_)convertible should be reworded to avoid dependence on the return statement |
Yes |
|
|
| 4138 |
New |
21.3.12 [meta.const.eval] |
is_within_lifetime should mandate is_object |
Yes |
|
|
| 4316 |
New |
21.4.13 [meta.reflection.substitute] |
{can_}substitute specification is ill-formed |
No |
|
|
| 4313 |
New |
22.4.4.2 [tuple.cnstr] |
Uses-allocator construction of pair in tuple's allocator_arg_t constructors |
Yes |
|
|
| 4267 |
New |
22.4.4.2 [tuple.cnstr] |
Uses-allocator construction is meaningless for tuple of references |
Yes |
|
|
| 532 |
LEWG |
22.4.9 [tuple.rel] |
Tuple comparison |
Yes |
|
348 |
| 4281 |
New |
22.5.3.7 [optional.observe] |
Inconsistency between value_or() and error_or() in std::expected |
No |
|
|
| 4406 |
New |
22.5.3.7 [optional.observe] |
optional::value_or return statement is inconsistent with Mandates |
Yes |
|
|
| 4304 |
New |
22.5.4.6 [optional.ref.observe] |
std::optional<NonReturnable&> is ill-formed due to value_or |
Yes |
|
|
| 4367 |
New |
22.5.4.7 [optional.ref.monadic] |
Improve optional<T&>::or_else |
Yes |
|
|
| 4299 |
New |
22.5.4.7 [optional.ref.monadic] |
Missing Mandates: part in optional<T&>::transform |
Yes |
|
|
| 4370 |
New |
22.5.9 [optional.comp.with.t] |
Comparison of optional<T> to T may be ill-formed |
Yes |
|
|
| 2991 |
Open |
22.6.3.2 [variant.ctor] |
variant copy constructor missing noexcept(see below) |
Yes |
|
|
| 4366 |
New |
22.8.6.8 [expected.object.eq] |
Heterogeneous comparison of expected may be ill-formed |
Yes |
|
|
| 4268 |
New |
22.10.4 [func.require] |
function<void()> suppresses nodiscard warnings |
No |
|
|
| 4319 |
New |
22.10.4 [func.require] |
Supporting copy-elision in function wrappers |
Yes |
|
|
| 4264 |
New |
22.10.17.1 [func.wrap.general] |
Skipping indirection is not allowed for function_ref |
Yes |
|
|
| 4255 |
New |
22.10.17.4.3 [func.wrap.move.ctor] |
move_only_function constructor should recognize empty copyable_functions |
Yes |
|
|
| 4373 |
New |
22.10.17.6.2 [func.wrap.ref.class] |
function_ref should provide result_type |
Yes |
|
|
| 4256 |
New |
22.10.17.6.3 [func.wrap.ref.ctor] |
Incorrect constrains for function_ref constructors from nontype_t |
Yes |
|
|
| 4365 |
New |
22.10.18.3 [func.search.bm] |
boyer_moore_searcher and boyer_moore_horspool_searcher should be constexpr-friendly |
Yes |
|
|
| 2884 |
LEWG |
23 [containers] |
Relational operators for containers should sfinae; if the underlying type is not comparable, neither should the container be |
No |
|
|
| 2885 |
LEWG |
23 [containers] |
The relational operators of optional and variant completely reflect the semantics of the element
types — this is inconsistent with other types in the library |
No |
|
|
| 3976 |
New |
23.2.2.5 [container.alloc.reqmts] |
What does it mean for a type to be "allocator aware"? |
No |
|
|
| 4396 |
New |
23.2.4 [sequence.reqmts] |
Improve inplace_vector(from_range_t, R&& rg) |
Yes |
|
|
| 4225 |
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? |
No |
|
|
| 4320 |
New |
23.3.9 [hive] |
hive operations involving insertion/erasure should have 𝒪(log n) time complexity |
Yes |
|
|
| 4379 |
New |
23.3.9.3 [hive.capacity] |
hive::reserve() needs Throws: element adjusted to match block min/max considerations |
Yes |
|
|
| 4380 |
New |
23.3.9.3 [hive.capacity] |
hive::reserve() complexity does not reflect potential deallocation of blocks
|
Yes |
|
|
| 4323 |
New |
23.3.9.5 [hive.operations] |
hive::unique time complexity should incorporate potential block removal complexity |
Yes |
|
|
| 4219 |
New |
23.3.13.6 [vector.erasure] |
std::vector::erase[_if] should be based on ranges remove |
Yes |
|
|
| 4398 |
New |
23.6.2 [queue.syn] |
enable_nonlocking_formatter_optimization should be disabled for container adaptors |
Yes |
|
|
| 4371 |
New |
23.6.3.1 [queue.defn] |
Container adaptor's empty/size should be noexcept |
Yes |
|
|
| 4350 |
New |
23.6.8 [flat.map] |
Should flat adaptors use insert_range when available? |
No |
|
|
| 3959 |
New |
23.6.8 [flat.map] |
Should the comparator of std::flat_map/std::flat_multimap be copied twice in some operations? |
No |
|
|
| 4374 |
New |
23.6.8.7 [flat.map.modifiers] |
flat_meow range insertion behavior is unclear if in-place merge cannot allocate additional memory |
No |
|
|
| 4352 |
New |
23.6.9.1 [flat.multimap.overview] |
"operations on flat_multimap are equivalent to those of flat_map" |
No |
|
|
| 4384 |
New |
23.6.11.2 [flat.set.defn] |
flat_set::erase(iterator) is underconstrained
|
Yes |
|
|
| 4351 |
New |
23.7.2.1 [span.syn] |
integral-constant-like needs more remove_cvref_t |
Yes |
|
|
| 4397 |
New |
23.7.2.2.2 [span.cons] |
Improve span(R&& r) |
Yes |
|
|
| 4404 |
New |
23.7.2.2.3 [span.deduct] |
Should span(R&&) CTAD apply P2280? |
Yes |
|
|
| 4275 |
New |
23.7.3.2 [mdspan.syn] |
std::dynamic_extent should also be defined in <mdspan> |
Yes |
|
|
| 4020 |
New |
23.7.3.3.2 [mdspan.extents.expo] |
extents::index-cast weirdness |
Yes |
|
|
| 4314 |
New |
23.7.3.4 [mdspan.layout] |
Missing move in mdspan layout mapping::operator() |
Yes |
|
|
| 4372 |
New |
23.7.3.4.8.1 [mdspan.layout.leftpad.overview] |
Weaken Mandates: for dynamic padding values in padded layouts |
Yes |
|
|
| 4021 |
New |
23.7.3.6.1 [mdspan.mdspan.overview] |
mdspan::is_always_meow() should be noexcept |
Yes |
|
|
| 4405 |
New |
23.7.3.6.2 [mdspan.mdspan.cons] |
mdspan constructor should disallow derived to base conversions |
Yes |
|
|
| 4271 |
New |
24.3.1 [iterator.requirements.general] |
Caching range views claim amortized amortized 𝒪(1) runtime
complexity for algorithms that are in fact 𝒪(n) |
Yes |
|
|
| 4171 |
New |
24.3.6.3 [indirectcallable.indirectinvocable] |
P2609R3 breaks code that uses views::zip and get<T> |
No |
|
|
| 4270 |
New |
24.3.6.4 [projected] |
Diagnose misuse of std::projected::operator* |
Yes |
|
|
| 4385 |
New |
24.7 [iterator.range] |
Including <simd> doesn't provide std::begin/end
|
Yes |
|
|
| 4387 |
Open |
24.7 [iterator.range] |
Including <stacktrace> doesn't provide std::begin/end
|
Yes |
|
|
| 4307 |
New |
25.2 [ranges.syn] |
Make good use of sized-random-access-range and bidirectional-common
in <ranges> |
Yes |
|
|
| 4062 |
New |
25.3.13 [range.prim.empty] |
ranges::empty has no semantic requirements for forward_ranges |
No |
|
|
| 4389 |
New |
25.4.2 [range.range] |
ranges::for_each possibly behaves differently from range-based for |
Yes |
|
|
| 4229 |
New |
25.5.7.2 [range.utility.conv.to] |
std::ranges::to with union return type |
Yes |
|
|
| 4066 |
New |
25.5.7.2 [range.utility.conv.to] |
ranges::to should reserve when sized_sentinel_for is satisfied |
Yes |
|
|
| 4381 |
New |
25.5.7.2 [range.utility.conv.to] |
std::ranges::to specification using CTAD not supported by core language
|
Yes |
|
|
| 4214 |
New |
25.7.10.1 [range.take.overview] |
Missing Preconditions for take/drop adaptor |
Yes |
|
|
| 4050 |
New |
25.7.10.1 [range.take.overview] |
Should views::iota(0) | views::take(5) be views::iota(0, 5)? |
Yes |
|
|
| 4009 |
New |
25.7.12.2 [range.drop.view] |
drop_view::begin const may have 𝒪(n) complexity |
Yes |
|
|
| 4401 |
New |
25.7.14.2 [range.join.view] |
join_view should be sized_range when applied to ranges of simd::vec |
Yes |
|
|
| 4220 |
New |
25.7.14.2 [range.join.view] |
join_view incorrectly stores inner range |
Yes |
|
|
| 4249 |
New |
25.7.16.3 [range.lazy.split.outer] |
The past end issue for lazy_split_view |
Yes |
|
|
| 4166 |
New |
25.7.18.2 [range.concat.view] |
concat_view::end() should be more constrained in order to support noncopyable iterators |
Yes |
|
|
| 4116 |
New |
25.7.24.3 [range.enumerate.iterator] |
enumerate_view::iterator and cartesian_product_view::iterator should not
always provide iterator_category |
Yes |
|
|
| 4254 |
New |
25.7.32.3 [range.stride.iterator] |
stride_view::iterator should provide operator-> |
Yes |
|
|
| 4277 |
New |
26.2 [algorithms.requirements] |
§[algorithms.requirements] It is unclear what an algorithm is |
Yes |
|
|
| 4273 |
New |
26.3.6 [execpol] |
Standard execution policy types should be conventional tag class types |
Yes |
|
|
| 4297 |
New |
26.4 [algorithm.syn] |
Missing permutable constraint for iterator overloads in Parallel Range Algorithms |
Yes |
|
|
| 4241 |
New |
26.6.5 [alg.foreach] |
ranges::for_each(_n) should be less constrained |
Yes |
|
|
| 4262 |
New |
26.7.1 [alg.copy] |
copy_if, remove_copy, remove_copy_if, unique_copy have too strong preconditions |
Yes |
|
|
| 4269 |
New |
26.7.9 [alg.unique] |
unique_copy passes arguments to its predicate backwards |
Yes |
|
|
| 2985 |
LEWG |
26.7.10 [alg.reverse] |
std::reverse should be permitted to be vectorized |
Yes |
|
|
| 2973 |
LEWG |
26.8.6 [alg.merge] |
inplace_merge exact comparison count complexity prohibits useful real-world optimizations |
Yes |
|
|
| 4265 |
New |
26.10.16 [numeric.ops.midpoint] |
std::midpoint should not accept const bool |
Yes |
|
|
| 2883 |
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 |
|
|
| 4378 |
New |
27.4.3.6 [string.access] |
Inconsistency between std::basic_string's data() and operator[] specification |
Yes |
|
|
| 4259 |
New |
27.4.3.8.2 [string.find] |
P1148R0 changed the return values of searching functions of std::basic_string on some platforms |
Yes |
|
|
| 4261 |
New |
27.4.3.8.2 [string.find] |
P1206R7 broke uses of container adaptors with old custom sequence containers |
No |
|
|
| 4287 |
New |
28.3.4.2.5.3 [locale.codecvt.virtuals] |
§[locale.codecvt.virtuals] do_in and do_out could do with better specification |
Yes |
|
|
| 4285 |
New |
28.3.4.6.2.2 [locale.time.get.members] |
time_get::do_get_date is problematic even after LWG 461 |
No |
|
|
| 4263 |
New |
28.5 [format] |
What should std::format_to etc. behave when the output is overlong? |
No |
|
|
| 4146 |
New |
28.5.6.4 [format.formatter.spec] |
§[format.formatter.spec]/3 unconditionally enables nonlocking for container adaptors |
Yes |
|
|
| 4284 |
New |
28.5.6.4 [format.formatter.spec] |
Integer-class types should be formattable |
Yes |
|
|
| 4221 |
New |
28.5.7 [format.range] |
Cannot format const-iterable only ranges |
No |
|
|
| 4399 |
New |
28.5.9 [format.tuple] |
enable_nonlocking_formatter_optimization for pair and tuple needs remove_cvref_t |
Yes |
|
|
| 4109 |
New |
29.5.3.1 [rand.req.genl] |
Instantiating templates in §[rand] with int8_t/uint8_t is undefined behavior |
Yes |
|
|
| 4136 |
New |
29.9.3 [linalg.general] |
Specify behavior of [linalg] Hermitian algorithms on diagonal with nonzero imaginary part |
Yes |
|
|
| 4302 |
New |
29.9.13.8 [linalg.algs.blas1.ssq] |
Problematic vector_sum_of_squares wording |
Yes |
|
|
| 4409 |
New |
29.10 [simd] |
Constant expression ranges::size(r) Constraints and Mandates in [simd] |
Yes |
|
|
| 4407 |
New |
29.10.7.2 [simd.ctor] |
constexpr-wrapper-like needs remove_cvref_t in simd::basic_vec
constructor |
Yes |
|
|
| 4403 |
New |
29.10.7.2 [simd.ctor] |
simd::basic_vec CTAD misses difference type casting |
Yes |
|
|
| 4390 |
New |
29.10.7.2 [simd.ctor] |
simd::basic_vec(U&&) default template parameter |
Yes |
|
|
| 4391 |
New |
29.10.7.2 [simd.ctor] |
Ambiguities of simd::basic_vec constructor |
Yes |
|
|
| 4408 |
New |
29.10.7.3 [simd.subscr] |
Hardening simd::vec::operator[] |
Yes |
|
|
| 4392 |
New |
29.10.8.7 [simd.loadstore] |
simd::unchecked_load misses difference type casting |
Yes |
|
|
| 4394 |
New |
29.10.8.7 [simd.loadstore] |
simd::unchecked_load(I first, S last) construct span maybe ill-formed |
Yes |
|
|
| 4393 |
New |
29.10.8.11 [simd.permute.memory] |
simd::unchecked_scatter_to is underconstrained |
Yes |
|
|
| 4386 |
New |
29.10.8.13 [simd.alg] |
std::simd::select(bool c, const T& a, const U& b) is underconstrained
|
Yes |
|
|
| 4375 |
New |
29.10.8.15 [simd.bit] |
std::simd::bit_ceil should not be noexcept |
Yes |
|
|
| 4402 |
New |
29.10.9.1 [simd.mask.overview] |
List-initialization of iterators in [simd.mask.overview] |
Yes |
|
|
| 4382 |
New |
29.10.9.2 [simd.mask.ctor] |
The simd::basic_mask(bool) overload needs to be more constrained
|
Yes |
|
|
| 4376 |
New |
29.10.9.4 [simd.mask.unary] |
ABI tag in return type of [simd.mask.unary] is overconstrained |
Yes |
|
|
| 4211 |
New |
30.11.2.1 [time.zone.db.tzdb] |
IANA time zone database allows links to refer to links |
Yes |
|
|
| 4400 |
New |
30.12 [time.format] |
enable_nonlocking_formatter_optimization for durations with custom rep |
Yes |
|
|
| 4022 |
New |
30.12 [time.format] |
Ambiguity in the formatting of negative years with format specifier %C |
Yes |
|
|
| 4039 |
New |
31.7.6.3.5 [ostream.formatted.print] |
§[ostream.formatted.print]: Inappropriate usage of badbit in definition of
vprint_unicode/vprint_nonunicode |
Yes |
|
|
| 4364 |
New |
31.7.7 [std.manip] |
SFINAE-friendliness on operator<< and operator>> for unspecified I/O manipulators |
No |
|
|
| 3992 |
New |
31.8.2.4 [stringbuf.members] |
basic_stringbuf::str()&& should enforce 𝒪(1) |
Yes |
|
|
| 4279 |
New |
31.12.13.2 [fs.op.absolute] |
§[fs.op.absolute] Non-normative encouragement should be Recommended practice |
No |
|
|
| 4362 |
New |
32.3.8 [stoptoken.inplace] |
Inconsistent usage of constexpr for inplace_stop_token and inplace_stop_source |
Yes |
|
|
| 1484 |
LEWG |
32.4.3 [thread.thread.class] |
Need a way to join a thread with a timeout |
No |
|
|
| 4310 |
New |
32.4.3.3 [thread.thread.constr] |
Is "the completion of the invocation of the constructor" considered as an expression? |
No |
|
|
| 2236 |
SG1 |
32.5.2 [atomics.syn] |
kill_dependency unconditionally noexcept |
No |
|
|
| 4309 |
New |
32.5.4 [atomics.order] |
How are two seq_cst operations ordered in the single total order if these two operations are unsequenced? |
No |
|
|
| 1459 |
LEWG |
32.5.4 [atomics.order] |
Overlapping evaluations are allowed |
No |
|
1458 |
| 4377 |
New |
32.5.7.2 [atomics.ref.ops] |
Misleading note about lock-free property of std::atomic_ref |
Yes |
|
|
| 4244 |
New |
32.5.7.2 [atomics.ref.ops] |
Whether the spuriously failed comparison applies to compare_exchange_strong is unclear |
No |
|
|
| 4321 |
New |
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 |
|
|
| 1488 |
LEWG |
32.6 [thread.mutex] |
Improve interoperability between the C++0x and C1x threads APIs |
No |
|
|
| 961 |
LEWG |
32.6.4 [thread.mutex.requirements] |
Various threading bugs #11 |
No |
|
936 |
| 936 |
LEWG |
32.6.4 [thread.mutex.requirements] |
Mutex type overspecified |
No |
|
961 |
| 1493 |
LEWG |
32.6.4 [thread.mutex.requirements] |
Add mutex, recursive_mutex, is_locked function |
No |
|
|
| 4353 |
New |
33 [exec] |
Uses of MANDATE-NOTHROW in CPOs should not enclose CPO argument sub-expressions |
No |
|
|
| 4260 |
New |
33.2.1 [exec.queryable.general] |
Query objects must be default constructible |
Yes |
|
|
| 4326 |
New |
33.5.1 [exec.fwd.env] |
Standard defined queries can't customize forwarding_query_t by inheriting from it |
Yes |
|
|
| 4354 |
New |
33.5.8 [exec.get.fwd.progress] |
Reconsider weakly_parallel as the default forward_progress_guarantee |
Yes |
|
|
| 4327 |
New |
33.6 [exec.sched] |
Equal schedulers should be required to have same behaviour |
No |
|
|
| 4328 |
New |
33.6 [exec.sched] |
Remove note in §[exec.sched] regarding waiting for completion of scheduled operations |
Yes |
|
|
| 4213 |
New |
33.9 [exec.snd] |
Sender spec depends on unspecified order of evaluation |
No |
|
|
| 4278 |
New |
33.9.2 [exec.snd.expos] |
Consider changing how get-domain-early(sndr) works |
No |
|
|
| 4368 |
New |
33.9.5 [exec.domain.default] |
Potential dangling reference returned from transform_sender |
Yes |
|
|
| 4363 |
New |
33.9.6 [exec.snd.transform] |
transform_sender comparing types ignoring cv-qualifiers doesn't take into account differences in value category |
Yes |
|
|
| 4355 |
New |
33.9.10 [exec.connect] |
connect-awaitable() should mandate rcvr can receive all completion-signals rather than using constraints |
Yes |
|
|
| 4356 |
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 |
|
|
| 4357 |
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 |
|
|
| 4395 |
New |
33.9.12.3 [exec.write.env] |
write_env implementation-detail lambda should have explicit return type |
No |
|
|
| 4369 |
New |
33.9.12.9 [exec.then] |
check-types function for upon_error and upon_stopped is wrong |
Yes |
|
|
| 4359 |
New |
33.13.1 [exec.as.awaitable] |
as_awaitable(expr, p) does not define semantics of call if p is not an lvalue |
Yes |
|
|
| 4358 |
New |
33.13.1 [exec.as.awaitable] |
§[exec.as.awaitable] is using "Preconditions:" when it should probably be described in the constraint |
Yes |
|
|
| 4360 |
New |
33.13.1 [exec.as.awaitable] |
awaitable-sender concept should qualify use of awaitable-receiver type |
Yes |
|
|
| 4361 |
New |
33.13.1 [exec.as.awaitable] |
awaitable-receiver::set_value should use Mandates instead of constraints |
Yes |
|
|
| 4330 |
New |
33.13.3 [exec.affine.on] |
affine_on semantics |
No |
|
|
| 4331 |
New |
33.13.3 [exec.affine.on] |
affine_on shape may be wrong |
No |
|
|
| 4332 |
New |
33.13.3 [exec.affine.on] |
affine_on shouldn't forward the stop token to the scheduling operation |
No |
|
|
| 4344 |
New |
33.13.3 [exec.affine.on] |
affine_on has no specification for the default |
Yes |
|
|
| 4329 |
New |
33.13.3 [exec.affine.on] |
Customising affine_on for other algorithms |
No |
|
|
| 4336 |
New |
33.13.5 [exec.task.scheduler] |
bulk vs. task_scheduler |
No |
|
|
| 4342 |
New |
33.13.5 [exec.task.scheduler] |
Missing rvalue reference qualification for task_scheduler::ts-sender::connect() |
Yes |
|
|
| 4339 |
New |
33.13.6 [exec.task] |
task's coroutine frame may be released late |
Yes |
|
|
| 4338 |
New |
33.13.6.2 [task.class] |
sender unaware coroutines should be able to co_await a task |
No |
|
|
| 4341 |
New |
33.13.6.2 [task.class] |
Missing rvalue reference qualification for task::connect() |
Yes |
|
|
| 4343 |
New |
33.13.6.2 [task.class] |
Missing default template arguments for task |
Yes |
|
|
| 4348 |
New |
33.13.6.2 [task.class] |
task doesn't support symmetric transfer |
No |
|
|
| 4333 |
New |
33.13.6.5 [task.promise] |
task uses unusual allocator customisation |
No |
|
|
| 4335 |
New |
33.13.6.5 [task.promise] |
task shadows the environment's allocator |
No |
|
|
| 4337 |
New |
33.13.6.5 [task.promise] |
co_await change_coroutine_scheduler(s) requires assignable |
Yes |
|
|
| 4340 |
New |
33.13.6.5 [task.promise] |
task::promise_type::unhandled_stopped() should be noexcept |
Yes |
|
|
| 4345 |
New |
33.13.6.5 [task.promise] |
task::promise_type::return_value default template parameter |
Yes |
|
|
| 4346 |
New |
33.13.6.5 [task.promise] |
task::promise_type::return_void/value lack a specification |
Yes |
|
|
| 4347 |
New |
33.13.6.5 [task.promise] |
task's stop source is always created |
No |
|
|
| 4349 |
New |
33.13.6.5 [task.promise] |
task is not actually started lazily |
Yes |
|
|
| 4334 |
New |
33.13.6.5 [task.promise] |
task<...>::promise_type supports arbitrary allocator_arg position |
No |
|
|
| 2533 |
SG1 |
99 [concurr.ts::futures.unique.future] |
[concurr.ts] Constrain threads where future::then can run a continuation |
No |
|
|
| 3114 |
LEWG |
16 [networking.ts::buffer] |
[networking.ts] Permit efficient composition when using DynamicBuffer |
Yes |
|
|