Issue |
Status |
Section |
Title |
Proposed Resolution |
Priority |
Duplicates |
3105(i) |
New |
16 [library] |
T1 is convertible to T2 |
No |
3 |
|
2949(i) |
New |
16 [library] |
Unclear complexity requirements: space vs. time |
No |
4 |
|
2136(i) |
Open |
16.3.2 [structure] |
Postconditions vs. exceptions |
No |
3 |
|
3193(i) |
New |
16.3.2.4 [structure.specifications] |
Mandates: and Expects: elements are not defined for types |
Yes |
3 |
|
3401(i) |
New |
16.3.2.4 [structure.specifications] |
Is "as if by" equivalent to "equivalent to"? |
No |
3 |
|
3092(i) |
Open |
16.3.3.3.4 [bitmask.types] |
Unclear semantics of enum class bitmask types |
Yes |
3 |
|
3510(i) |
New |
16.3.3.3.6 [customization.point.object] |
Customization point objects should be invocable as non-const too |
No |
3 |
|
2818(i) |
Open |
16.4.2.2 [contents] |
"::std::" everywhere rule needs tweaking |
Yes |
2 |
|
3240(i) |
New |
16.4.3.2 [using.headers] |
Headers declare more than entities |
No |
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 |
|
2114(i) |
Open |
16.4.4.4 [nullablepointer.requirements] |
Incorrect "contextually convertible to bool" requirements |
Yes |
3 |
|
3267(i) |
New |
16.4.4.6 [allocator.requirements] |
Rebound allocators and is_always_equal |
Yes |
4 |
|
3157(i) |
New |
16.4.4.6 [allocator.requirements] |
Allocator destroy and fancy pointer operations must be non-throwing |
Yes |
3 |
|
3044(i) |
New |
16.4.4.6 [allocator.requirements] |
Strange specification of max_size() for an allocator |
Yes |
3 |
|
2461(i) |
New |
16.4.4.6 [allocator.requirements] |
Interaction between allocators and container exception safety guarantees |
No |
3 |
|
3177(i) |
New |
16.4.5.2.1 [namespace.std] |
Limit permission to specialize variable templates to program-defined types |
Yes |
3 |
|
3441(i) |
Open |
16.4.5.2.1 [namespace.std] |
Misleading note about calls to customization points |
Yes |
1 |
|
3442(i) |
Open |
16.4.5.2.1 [namespace.std] |
Unsatisfiable suggested implementation of customization points |
Yes |
1 |
|
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 |
|
Issue |
Status |
Section |
Title |
Proposed Resolution |
Priority |
Duplicates |
2153(i) |
LEWG |
20.2.2 [utility.swap] |
Narrowing of the non-member swap contract |
No |
2 |
|
2599(i) |
New |
20.2.6 [declval] |
Library incomplete type permission phrase is unclear |
No |
3 |
|
3342(i) |
New |
20.4.2 [pairs.pair] |
Library wording uses "initializes x with y", which is underspecified |
No |
3 |
|
2289(i) |
Open |
20.4.2 [pairs.pair] |
constexpr guarantees of defaulted functions still insufficient |
No |
3 |
|
2766(i) |
New |
20.4.3 [pairs.spec] |
Swapping non-swappable types |
Yes |
3 |
|
3166(i) |
New |
20.4.4 [pair.astuple] |
No such descriptive element as Value: |
No |
3 |
|
3378(i) |
New |
20.5.2 [tuple.syn] |
tuple_size_v/tuple_element_t should be available when tuple_size/tuple_element are |
Yes |
3 |
|
2528(i) |
New |
20.5.3.1 [tuple.cnstr] |
Order of std::tuple construction unspecified |
No |
3 |
|
3155(i) |
Open |
20.5.3.1 [tuple.cnstr] |
tuple<any, any>{allocator_arg_t, an_allocator} |
Yes |
3 |
|
3121(i) |
Open |
20.5.3.1 [tuple.cnstr] |
tuple constructor constraints for UTypes&&... overloads |
Yes |
2 |
|
2933(i) |
New |
20.5.4 [tuple.creation] |
PR for LWG 2773 could be clearer |
Yes |
3 |
|
3528(i) |
New |
20.5.5 [tuple.apply] |
make_from_tuple can perform (the equivalent of) a C-style cast |
Yes |
|
|
2472(i) |
New |
20.5.8 [tuple.rel] |
Heterogeneous comparisons in the standard library can result in ambiguities |
No |
3 |
|
532(i) |
LEWG |
20.5.8 [tuple.rel] |
Tuple comparison |
Yes |
|
348 |
2990(i) |
Open |
20.6.3 [optional.optional] |
optional::value_type is not always a value type |
Yes |
3 |
|
2811(i) |
New |
20.6.3.2 [optional.ctor] |
"Selected constructor" wording is incorrect for optional/variant/any |
Yes |
3 |
|
2746(i) |
New |
20.6.3.4 [optional.assign] |
Inconsistency between requirements for emplace between optional and variant |
Yes |
3 |
|
3424(i) |
New |
20.6.3.6 [optional.observe] |
optional::value_or should never return a cv-qualified type |
Yes |
3 |
|
2829(i) |
Open |
20.6.3.6 [optional.observe] |
LWG 2740 leaves behind vacuous words |
No |
2 |
|
2881(i) |
New |
20.7.3 [variant.variant] |
Adopt section III of P0308R0 |
No |
3 |
|
3215(i) |
New |
20.7.3.2 [variant.ctor] |
variant default constructor has vague constexpr requirements |
No |
2 |
|
2833(i) |
Open |
20.7.3.2 [variant.ctor] |
Library needs to specify what it means when it declares a function constexpr |
Yes |
2 |
|
2991(i) |
LEWG |
20.7.3.2 [variant.ctor] |
variant copy constructor missing noexcept(see below) |
Yes |
|
|
3069(i) |
New |
20.7.3.4 [variant.assign] |
Move assigning variant's subobject corrupts data |
Yes |
3 |
|
3052(i) |
Tentatively Resolved |
20.7.7 [variant.visit] |
visit is underconstrained |
Yes |
2 |
|
3416(i) |
New |
20.8.4 [any.class] |
The Throws: specification of std::any does not mention allocation |
No |
3 |
|
3423(i) |
New |
20.8.5 [any.nonmembers] |
std::any_cast should never return a cv-qualified type |
Yes |
3 |
|
3305(i) |
Open |
20.8.5 [any.nonmembers] |
any_cast<void> |
Yes |
2 |
|
2348(i) |
Open |
20.9.2 [template.bitset] |
charT('1') is not the wide equivalent of '1' |
Yes |
3 |
|
3454(i) |
LEWG |
20.10.3 [pointer.traits] |
pointer_traits::pointer_to should be constexpr |
Yes |
|
|
2421(i) |
New |
20.10.6 [ptr.align] |
Non-specification of handling zero size in std::align [ptr.align] |
No |
3 |
|
3525(i) |
New |
20.10.8.2 [allocator.uses.construction] |
uses_allocator_construction_args fails to handle types convertible to pair |
Yes |
|
|
3526(i) |
New |
20.10.8.2 [allocator.uses.construction] |
Return types of uses_allocator_construction_args unspecified |
Yes |
|
|
3527(i) |
New |
20.10.8.2 [allocator.uses.construction] |
uses_allocator_construction_args handles rvalue pairs of rvalue references incorrectly |
Yes |
|
|
3192(i) |
New |
20.10.8.2 [allocator.uses.construction] |
§[allocator.uses.construction] functions misbehave for const types |
Yes |
3 |
|
3159(i) |
New |
20.11.1.3 [unique.ptr.single] |
§[unique.ptr.single] requirements on deleter may be too strict |
No |
3 |
|
2262(i) |
Open |
20.11.1.3 [unique.ptr.single] |
Requirement for unique_ptr<T>::get_deleter()(p) to be able to destroy the unique_ptr |
Yes |
3 |
|
2762(i) |
Open |
20.11.1.3.5 [unique.ptr.single.observers] |
unique_ptr operator*() should be noexcept |
Yes |
3 |
|
2594(i) |
New |
20.11.3 [util.smartptr.shared] |
Contradicting definition of empty shared_ptr on shared_ptr(nullptr, d) |
Yes |
3 |
|
2906(i) |
New |
20.11.3.2 [util.smartptr.shared.const] |
There is no ability to supply an allocator for the control block when constructing a shared_ptr from a
unique_ptr |
No |
3 |
|
2751(i) |
New |
20.11.3.3 [util.smartptr.shared.dest] |
shared_ptr deleter not specified to observe expired weak_ptr instances |
No |
4 |
|
3210(i) |
New |
20.11.3.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.11.3.7 [util.smartptr.shared.create] |
Rebinding the allocator before calling construct/destroy in allocate_shared |
Yes |
3 |
|
3471(i) |
New |
20.12 [mem.res] |
polymorphic_allocator::allocate does not satisfy Cpp17Allocator requirements |
Yes |
3 |
|
2848(i) |
New |
20.12.5.2 [mem.res.pool.options] |
Pass-through threshold for pool allocator |
No |
3 |
|
2690(i) |
LEWG |
20.14.5 [func.invoke] |
invoke<R> |
Yes |
|
|
3046(i) |
New |
20.14.6 [refwrap] |
Do not require reference_wrapper to support non-referenceable function types |
Yes |
3 |
|
3146(i) |
New |
20.14.6.6 [refwrap.helpers] |
Excessive unwrapping in std::ref/cref |
Yes |
3 |
|
2491(i) |
New |
20.14.8 [comparisons] |
std::less<T*> in constant expression |
Yes |
3 |
|
2547(i) |
New |
20.14.8 [comparisons] |
Container requirements (and other library text) should say "strict total order", not just "total order" |
No |
3 |
|
3493(i) |
New |
20.14.17.3.2 [func.wrap.func.con] |
The constructor of std::function taking an F is missing a constraint |
Yes |
3 |
|
2774(i) |
New |
20.14.17.3.2 [func.wrap.func.con] |
std::function construction vs assignment |
Yes |
3 |
|
2813(i) |
EWG |
20.14.17.3.2 [func.wrap.func.con] |
std::function should not return dangling references |
Yes |
2 |
|
3512(i) |
New |
20.14.19 [unord.hash] |
Incorrect exception safety guarantee for unordered containers |
No |
3 |
|
2290(i) |
Open |
20.15 [meta] |
Top-level "SFINAE"-based constraints should get a separate definition in Clause 17 |
Yes |
3 |
|
2452(i) |
Core |
20.15 [meta] |
is_constructible, etc. and default arguments |
No |
3 |
|
2845(i) |
New |
20.15.2 [meta.rqmts] |
enable_if, result_of, common_type and aligned_storage do not meet the definition
of TransformationTrait |
No |
3 |
|
3099(i) |
New |
20.15.3 [meta.type.synop] |
is_assignable<Incomplete&, Incomplete&> |
Yes |
2 |
|
2939(i) |
New |
20.15.3 [meta.type.synop] |
Some type-completeness constraints of traits are overspecified |
No |
2 |
|
2922(i) |
LEWG |
20.15.3 [meta.type.synop] |
The *_constant<> templates do not make use of template<auto> |
No |
|
|
2827(i) |
New |
20.15.5.4 [meta.unary.prop] |
is_trivially_constructible and non-trivial destructors |
No |
3 |
|
2496(i) |
New |
20.15.5.4 [meta.unary.prop] |
Certain hard-to-avoid errors not in the immediate context are not allowed to be triggered by
the evaluation of type traits |
No |
3 |
|
2116(i) |
Open |
20.15.5.4 [meta.unary.prop] |
is_nothrow_constructible and destructors |
No |
3 |
|
2358(i) |
Open |
20.15.5.4 [meta.unary.prop] |
Apparently-bogus definition of is_empty type trait |
Yes |
3 |
|
2077(i) |
Open |
20.15.5.4 [meta.unary.prop] |
Further incomplete constraints for type traits |
No |
3 |
|
3486(i) |
LEWG |
20.15.5.4 [meta.unary.prop] |
is_constructible<T[], T...> may be misleading in C++20 |
No |
|
|
3400(i) |
New |
20.15.7 [meta.rel] |
Does is_nothrow_convertible consider destruction of the destination type? |
No |
3 |
|
3174(i) |
New |
20.15.7 [meta.rel] |
Precondition on is_convertible is too strong |
Yes |
3 |
|
3205(i) |
New |
20.15.8.7 [meta.trans.other] |
decay_t in the new common_type fallback should be remove_cvref_t |
Yes |
3 |
|
3152(i) |
New |
20.15.8.7 [meta.trans.other] |
common_type and common_reference have flaws in common |
Yes |
3 |
|
3456(i) |
New |
20.19.3 [charconv.from.chars] |
Pattern used by std::from_chars is underspecified |
Yes |
3 |
|
3081(i) |
Open |
20.19.3 [charconv.from.chars] |
Floating point from_chars API does not distinguish between overflow and underflow |
Yes |
2 |
|
3082(i) |
Open |
20.19.3 [charconv.from.chars] |
from_chars specification regarding floating point rounding is inconsistent |
Yes |
2 |
|
3412(i) |
New |
20.20.2.2 [format.string.std] |
§[format.string.std] references to "Unicode encoding" unclear |
No |
3 |
|
3462(i) |
New |
20.20.5.1 [formatter.requirements] |
§[formatter.requirements]: Formatter requirements forbid use of fc.arg() |
Yes |
3 |
|
3515(i) |
New |
20.21.2 [stacktrace.syn] |
§[stacktrace.basic.nonmem]: operator<< should be less templatized |
Yes |
|
|
3514(i) |
New |
20.21.2 [stacktrace.syn] |
stacktrace should add type alias pmr::stacktrace |
Yes |
|
|
3507(i) |
New |
20.21.3.4 [stacktrace.entry.query] |
P0881R7 ("stacktrace") does not define "actual file name", "actual line number" |
No |
2 |
|
Issue |
Status |
Section |
Title |
Proposed Resolution |
Priority |
Duplicates |
2307(i) |
LEWG |
22 [containers] |
Should the Standard Library use explicit only when necessary? |
No |
2 |
|
2885(i) |
LEWG |
22 [containers] |
The relational operators of optional and variant completely reflect the semantics of the element
types — this is inconsistent with other types in the library |
No |
|
|
2884(i) |
LEWG |
22 [containers] |
Relational operators for containers should sfinae; if the underlying type is not comparable, neither should the container be |
No |
|
|
3059(i) |
New |
22.2 [container.requirements] |
Wrong requirements for map-like associative container assignment? |
No |
3 |
|
3028(i) |
New |
22.2.1 [container.requirements.general] |
Container requirements tables should distinguish const and non-const variables |
Yes |
3 |
|
3431(i) |
New |
22.2.1 [container.requirements.general] |
<=> for containers should require three_way_comparable<T> instead of <=> |
Yes |
2 |
|
2269(i) |
New |
22.2.1 [container.requirements.general] |
Container iterators and argument-dependent lookup |
No |
4 |
|
1521(i) |
Open |
22.2.1 [container.requirements.general] |
Requirements on internal pointer representations in containers |
Yes |
3 |
|
2321(i) |
Open |
22.2.1 [container.requirements.general] |
Moving containers should (usually) be required to preserve iterators |
Yes |
3 |
|
2705(i) |
New |
22.2.3 [sequence.reqmts] |
Questionable precondition on Sequence containers a.assign(n, t) |
Yes |
3 |
|
3297(i) |
New |
22.2.3 [sequence.reqmts] |
Useless sequence container requirement |
Yes |
3 |
|
2206(i) |
Open |
22.2.3 [sequence.reqmts] |
Inaccuracy in initializer_list constructor requirements |
Yes |
3 |
|
3438(i) |
New |
22.2.4.1 [container.node.overview] |
§[container.node.overview] missing multiset/map cases |
No |
3 |
|
3227(i) |
New |
22.2.6 [associative.reqmts] |
Ambiguity issue for extract in ordered and unordered associative containers |
Yes |
3 |
|
2362(i) |
New |
22.2.6 [associative.reqmts] |
unique, associative emplace() should not move/copy the mapped_type constructor
arguments when no insertion happens |
No |
3 |
|
2227(i) |
Open |
22.2.6 [associative.reqmts] |
Stateful comparison objects in associative containers |
No |
3 |
|
2844(i) |
Open |
22.2.6 [associative.reqmts] |
Stability of a_uniq.insert(i, j) |
No |
3 |
|
2215(i) |
Open |
22.2.6 [associative.reqmts] |
(unordered) associative container functors should be CopyConstructible |
Yes |
3 |
|
1175(i) |
Open |
22.2.7 [unord.req] |
unordered complexity |
Yes |
3 |
|
2198(i) |
Open |
22.2.7 [unord.req] |
max_load_factor(z) makes no strong guarantees, but bans useful behavior |
Yes |
3 |
|
2189(i) |
Open |
22.2.7.2 [unord.req.except] |
Throwing swap breaks unordered containers' state |
No |
3 |
|
3219(i) |
New |
22.3.7.1 [array.overview] |
std::array overview container requirements are incorrect |
Yes |
3 |
|
2823(i) |
Open |
22.3.7.1 [array.overview] |
std::array initialization is still not permissive enough |
Yes |
3 |
|
3488(i) |
Open |
22.3.7.4 [array.special] |
Is array<const int, 0> swappable or not? |
Yes |
3 |
|
2157(i) |
Open |
22.3.7.5 [array.zero] |
How does std::array<T,0> initialization work when T is not default-constructible? |
Yes |
3 |
|
3308(i) |
New |
22.3.8.4 [deque.modifiers] |
vector and deque iterator erase invalidates elements even when no change occurs |
Yes |
3 |
|
3088(i) |
New |
22.3.9.6 [forwardlist.ops] |
forward_list::merge behavior unclear when passed *this |
Yes |
3 |
|
2997(i) |
New |
22.3.10.5 [list.ops] |
LWG 491 and the specification of {forward_,}list::unique |
Yes |
3 |
|
2158(i) |
Open |
22.3.11.3 [vector.capacity] |
Conditional copy/move in std::vector |
Yes |
3 |
|
1102(i) |
Open |
22.3.11.3 [vector.capacity] |
std::vector's reallocation policy still unclear |
Yes |
3 |
|
1422(i) |
Open |
22.3.12 [vector.bool] |
vector<bool> iterators are not random access |
No |
3 |
|
2713(i) |
New |
22.5 [unord] |
More missing allocator-extended constructors for unordered containers |
Yes |
3 |
|
3506(i) |
Tentatively Ready |
22.6.5 [priority.queue] |
Missing allocator-extended constructors for priority_queue |
Yes |
3 |
|
3522(i) |
Tentatively Ready |
22.6.5 [priority.queue] |
Missing requirement on InputIterator template parameter for priority_queue constructors |
Yes |
|
|
3189(i) |
New |
22.6.5 [priority.queue] |
Missing requirement for std::priority_queue |
No |
3 |
|
3161(i) |
Open |
22.6.6 [stack] |
Container adapters mandate use of emplace_back but don't require it |
Yes |
3 |
|
3203(i) |
New |
22.7.3.1 [span.overview] |
span element access invalidation |
Yes |
2 |
|
Issue |
Status |
Section |
Title |
Proposed Resolution |
Priority |
Duplicates |
1213(i) |
Open |
23.3 [iterator.requirements] |
Meaning of valid and singular iterator underspecified |
No |
4 |
|
2375(i) |
New |
23.3.1 [iterator.requirements.general] |
Is [iterator.requirements.general]/9 too broadly applied? |
No |
3 |
|
3283(i) |
New |
23.3.2.3 [iterator.traits] |
Types satisfying input_iterator but not equality_comparable look like
C++17 output iterators |
Yes |
2 |
|
3287(i) |
New |
23.3.2.3 [iterator.traits] |
Exposition-only cpp17-input-iterator concept is needlessly complex |
Yes |
3 |
|
3289(i) |
New |
23.3.2.3 [iterator.traits] |
Cannot opt out of C++17 iterator-ness without also opting out of C++20 iterator-ness |
Yes |
2 |
|
3376(i) |
New |
23.3.4.4 [iterator.concept.winc] |
"integer-like class type" is too restrictive |
No |
3 |
|
3366(i) |
New |
23.3.4.4 [iterator.concept.winc] |
Narrowing conversions between integer and integer-class types |
No |
3 |
|
2962(i) |
Open |
23.3.5.3 [input.iterators] |
Iterators of Containers of move-only types do not model InputIterator |
Yes |
2 |
|
484(i) |
Open |
23.3.5.3 [input.iterators] |
Convertible to T |
No |
2 |
|
2035(i) |
Open |
23.3.5.4 [output.iterators] |
Output iterator requirements are broken |
Yes |
3 |
|
2038(i) |
Open |
23.3.5.4 [output.iterators] |
Missing definition for incrementable iterator |
No |
3 |
|
3197(i) |
New |
23.4.3 [iterator.operations] |
std::prev should not require BidirectionalIterator |
Yes |
3 |
|
3439(i) |
New |
23.4.3 [iterator.operations] |
"Distance" template parameter is underspecified |
No |
3 |
|
3344(i) |
New |
23.4.3 [iterator.operations] |
advance(i, most-negative) and prev(i, most-negative) |
Yes |
3 |
|
2931(i) |
Open |
23.4.3 [iterator.operations] |
Missed optimization opportunity with single-argument std::next |
No |
3 |
|
3392(i) |
Open |
23.4.4.3 [range.iter.op.distance] |
ranges::distance() cannot be used on a move-only iterator with a sized sentinel |
Yes |
3 |
|
2858(i) |
New |
23.5.1 [reverse.iterators] |
LWG 2472: actually an incompatibility with C++03 |
Yes |
4 |
|
2595(i) |
New |
23.5.1.2 [reverse.iterator] |
reverse_iterator::operator[]'s return type revisited |
Yes |
3 |
|
3293(i) |
New |
23.5.3.9 [move.iter.nonmember] |
move_iterator operator+() has incorrect constraints |
Yes |
3 |
|
3408(i) |
New |
23.5.6.1 [counted.iterator] |
LWG 3291 reveals deficiencies in counted_iterator |
No |
2 |
|
3107(i) |
New |
23.6.4 [istreambuf.iterator] |
istreambuf_iterator has public exposition-only member |
Yes |
4 |
|
3188(i) |
New |
23.6.4 [istreambuf.iterator] |
istreambuf_iterator::pointer should not be unspecified |
Yes |
3 |
|
2366(i) |
New |
23.6.4 [istreambuf.iterator] |
istreambuf_iterator end-of-stream equality |
No |
3 |
|
3108(i) |
New |
23.6.4.2 [istreambuf.iterator.proxy] |
istreambuf_iterator::proxy::operator* should be const |
Yes |
3 |
|
2457(i) |
New |
23.7 [iterator.range] |
std::begin() and std::end() do not support multi-dimensional arrays correctly |
No |
3 |
|
Issue |
Status |
Section |
Title |
Proposed Resolution |
Priority |
Duplicates |
2963(i) |
New |
25 [algorithms] |
Algorithms with underspecified iterator requirements |
No |
3 |
|
1238(i) |
Open |
25 [algorithms] |
Defining algorithms taking iterator for range |
No |
3 |
|
2173(i) |
Open |
25 [algorithms] |
The meaning of operator + in the description of the algorithms |
Yes |
4 |
|
3049(i) |
Open |
25.2 [algorithms.requirements] |
Missing wording allowing algorithms to use copies of function objects as substitutes for their parameters |
Yes |
3 |
|
3089(i) |
New |
25.7.1 [alg.copy] |
copy_n should require non-overlapping ranges |
Yes |
3 |
|
2471(i) |
Open |
25.7.1 [alg.copy] |
copy_n's number of InputIterator increments unspecified |
No |
3 |
|
2985(i) |
LEWG |
25.7.10 [alg.reverse] |
std::reverse should be permitted to be vectorized |
Yes |
|
|
2267(i) |
New |
25.8.2.4 [partial.sort.copy] |
partial_sort_copy underspecified for ranges of two different types |
No |
3 |
|
2973(i) |
LEWG |
25.8.6 [alg.merge] |
inplace_merge exact comparison count complexity prohibits useful real-world optimizations |
Yes |
|
|
3032(i) |
New |
25.8.8 [alg.heap.operations] |
ValueSwappable requirement missing for push_heap and make_heap |
Yes |
3 |
|
3029(i) |
Open |
25.8.8.3 [pop.heap] |
pop_heap over-constrains input |
Yes |
3 |
|
3410(i) |
New |
25.8.12 [alg.three.way] |
lexicographical_compare_three_way is overspecified |
No |
3 |
|
3487(i) |
New |
25.10 [numeric.ops] |
Missing precondition on input and output aliasing of [numeric.ops] |
No |
3 |
|
3060(i) |
New |
25.10.8 [exclusive.scan] |
XXX_scan algorithms are specified to work with move-only T, but are
specified to make N copies of T into the destination range |
No |
2 |
|
3463(i) |
New |
25.10.11 [transform.inclusive.scan] |
Incorrect requirements for transform_inclusive_scan without initial value |
Yes |
3 |
|
3063(i) |
New |
25.11 [specialized.algorithms] |
Parallel algorithms in <memory> are underspecified |
No |
3 |
|
3064(i) |
New |
25.11 [specialized.algorithms] |
How do uninitialized memory algorithms obtain pointer without undefined behavior? |
No |
3 |
|
3436(i) |
New |
25.11.8 [specialized.construct] |
std::construct_at should support arrays |
Yes |
2 |
|
3521(i) |
New |
25.12 [alg.c.library] |
Overly strict requirements on qsort and bsearch |
Yes |
|
|
Issue |
Status |
Section |
Title |
Proposed Resolution |
Priority |
Duplicates |
423(i) |
Open |
29 [input.output] |
Effects of negative streamsize in iostreams |
Yes |
3 |
|
2675(i) |
New |
29.5.3.7 [ios.base.callback] |
register_callback can fail |
No |
3 |
|
3118(i) |
New |
29.5.4.2 [fpos.operations] |
fpos equality comparison unspecified |
No |
4 |
|
2214(i) |
Open |
29.5.5.2 [basic.ios.cons] |
Clarify basic_ios::init call restrictions |
Yes |
4 |
|
2504(i) |
New |
29.6.3 [streambuf] |
basic_streambuf is not an abstract class |
No |
3 |
|
2349(i) |
Open |
29.7.4.3.1 [istream.formatted.reqmts] |
Clarify input/output function rethrow behavior |
Yes |
3 |
|
2342(i) |
New |
29.7.5.2 [ostream] |
User conversion to wchar_t const* or to wchar_t not invoked for operator<< |
Yes |
4 |
|
2497(i) |
New |
29.7.5.2.4 [ostream.sentry] |
Use of uncaught_exception() |
Yes |
3 |
|
3501(i) |
New |
29.7.5.5 [ostream.manip] |
basic_syncbuf-related manipulators refer to some Allocator without defining it |
Yes |
3 |
|
2984(i) |
New |
29.7.7 [ext.manip] |
put_money(99) is unnecessarily undefined |
Yes |
3 |
|
3309(i) |
New |
29.8 [string.streams] |
Is <ios> implicitly #included by <sstream>, <fstream> etc.? |
No |
3 |
|
3097(i) |
New |
29.8.2.5 [stringbuf.virtuals] |
basic_stringbuf seekoff effects trigger undefined behavior and have contradictory returns |
No |
3 |
|
2286(i) |
Open |
29.8.2.5 [stringbuf.virtuals] |
stringbuf::underflow() underspecified |
Yes |
4 |
|
3430(i) |
Open |
29.9.1 [fstream.syn] |
std::fstream & co. should be constructible from string_view |
Yes |
3 |
|
3498(i) |
New |
29.10.2.1 [syncstream.syncbuf.overview] |
Inconsistent noexcept-specifiers for basic_syncbuf |
No |
3 |
|
3496(i) |
New |
29.10.2.4 [syncstream.syncbuf.members] |
What does "uniquely associated" mean for basic_syncbuf::emit()? |
No |
3 |
|
3497(i) |
New |
29.10.2.4 [syncstream.syncbuf.members] |
Postconditions for basic_syncbuf::emit() |
No |
3 |
|
3098(i) |
New |
29.11.6.5.9 [fs.path.decompose] |
Misleading example for filesystem::path::filename() |
Yes |
3 |
|
2947(i) |
New |
29.11.8.1 [fs.enum.path.format] |
Clarify several filesystem terms |
No |
3 |
|
3078(i) |
New |
29.11.10 [fs.class.directory.entry] |
directory_entry, directory_iterator and recursive_directory_iterator perform needless path copies |
No |
3 |
|
3480(i) |
New |
29.11.11 [fs.class.directory.iterator] |
directory_iterator and recursive_directory_iterator are not C++20 ranges |
No |
3 |
|
2708(i) |
Open |
29.11.12.2 [fs.rec.dir.itr.members] |
recursive_directory_iterator::recursion_pending() is incorrectly specified |
Yes |
2 |
|
3057(i) |
Open |
29.11.13.4 [fs.op.copy] |
Correct copy_options handling |
Yes |
2 |
|
3056(i) |
New |
29.11.13.5 [fs.op.copy.file] |
copy_file() copies which attributes? |
Yes |
3 |
|
Issue |
Status |
Section |
Title |
Proposed Resolution |
Priority |
Duplicates |
2819(i) |
New |
32.2.5 [thread.req.lockable] |
Unspecified Return type: elements |
Yes |
3 |
|
3499(i) |
New |
32.2.5.4 [thread.req.lockable.timed] |
Timed lockable and mutex requirements are imprecise about duration and time_point |
No |
3 |
|
1484(i) |
LEWG |
32.4.3 [thread.thread.class] |
Need a way to join a thread with a timeout |
No |
|
|
3516(i) |
New |
32.4.3.2 [thread.thread.id] |
thread::id spaceship may be inconsistent with equality |
Yes |
|
|
3475(i) |
New |
32.4.3.3 [thread.thread.constr] |
std::thread's constructor needs to be able to report general memory allocation failures |
Yes |
3 |
|
1488(i) |
LEWG |
32.5 [thread.mutex] |
Improve interoperability between the C++0x and C1x threads APIs |
No |
|
|
936(i) |
LEWG |
32.5.4 [thread.mutex.requirements] |
Mutex type overspecified |
No |
|
961 |
961(i) |
LEWG |
32.5.4 [thread.mutex.requirements] |
Various threading bugs #11 |
No |
|
936 |
1493(i) |
LEWG |
32.5.4 [thread.mutex.requirements] |
Add mutex, recursive_mutex, is_locked function |
No |
|
|
2363(i) |
Open |
32.5.4.5.2 [thread.sharedtimedmutex.class] |
Defect in 30.4.1.4.1 [thread.sharedtimedmutex.class] |
Yes |
2 |
|
3343(i) |
New |
32.6.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 |
32.6.4 [thread.condition.condvar] |
condition_variable::wait_for is overspecified |
No |
3 |
|
2530(i) |
Open |
32.9.5 [futures.state] |
Clarify observable side effects of releasing a shared state |
No |
3 |
|
3003(i) |
Open |
32.9.6 [futures.promise] |
<future> still has type-erased allocators in promise |
Yes |
2 |
|
2532(i) |
Open |
32.9.6 [futures.promise] |
Satisfying a promise at thread exit |
Yes |
3 |
|
2095(i) |
LEWG |
32.9.6 [futures.promise] |
promise and packaged_task missing constructors needed for uses-allocator construction |
Yes |
4 |
|
2202(i) |
Deferred |
32.9.9 [futures.async] |
Missing allocator support by async |
No |
4 |
|