# C++ Standard Library Issues List (Revision R123)

# Index by Status and Section

Reference ISO/IEC IS 14882:2020(E)

This document is the Index by Status and Section for the Library Active Issues List, Library Defect Reports and Accepted Issues, and Library Closed Issues List.

Revised 2022-11-24 at 09:59:48 UTC

## New (299 issues)

Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates
2392(i) | New | 3.37 [defns.ntcts] | "character type" is used but not defined | No | 3 |
3513(i) | New | 3.44 [defns.prog.def.type] | Fix definition of program-defined based on its uses | Yes | 3 |
3669(i) | New | 4.1.2 [intro.abstract] | `std::filesystem` operations should be observable behaviour | No | 3 |
3105(i) | New | 16 [library] | `T1` is convertible to `T2` | No | 3 |
2949(i) | New | 16 [library] | Unclear complexity requirements: space vs. time | No | 4 |
3538(i) | New | 16.2 [library.c] | §[library.c] C library functions are not addressable | No | 2 |
3556(i) | New | 16.3.2.3 [structure.requirements] | Specification of when semantic constraints are imposed by use of concepts is unclear | No | 3 |
3193(i) | New | 16.3.2.4 [structure.specifications] | Mandates: and Expects: elements are not defined for types | Yes | 3 |
3401(i) | New | 16.3.2.4 [structure.specifications] | Is "as if by" equivalent to "equivalent to"? | No | 3 |
3620(i) | New | 16.3.3.3.5.1 [character.seq.general] | What are execution character sets and execution wide-character sets (after P2314R4)? | No | 3 |
3690(i) | New | 16.4.2.2 [contents] | `std::make_from_tuple` etc. should find all tuple-like `std::get` overloads | Yes | 3 |
3240(i) | New | 16.4.3.2 [using.headers] | Headers declare more than entities | No | 3 |
3640(i) | New | 16.4.4 [utility.requirements] | Clarify which exceptions are propagated | Yes | 3 |
3044(i) | New | 16.4.4.6 [allocator.requirements] | Strange specification of `max_size()` for an allocator | Yes | 3 |
3267(i) | New | 16.4.4.6 [allocator.requirements] | Rebound allocators and `is_always_equal` | Yes | 4 |
3157(i) | New | 16.4.4.6 [allocator.requirements] | Allocator `destroy` and fancy pointer operations must be non-throwing | Yes | 3 |
2461(i) | New | 16.4.4.6 [allocator.requirements] | Interaction between allocators and container exception safety guarantees | No | 3 |
3682(i) | New | 16.4.4.6.1 [allocator.requirements.general] | A Cpp17Allocator type can't silently ignore an unsupported alignment | No | 3 |
3550(i) | New | 16.4.5.3 [reserved.names] | Names reserved by C for standard library not reserved by C++ | No | 3 |
3142(i) | New | 16.4.5.8 [res.on.functions] | `std::foo<incomplete>` should be ill-formed NDR | Yes | 3 |
3511(i) | New | 16.4.5.9 [res.on.arguments] | Clarify global permission to move | Yes | 3 |
3429(i) | New | 16.4.5.11 [res.on.requirements] | "models" should subsume like "satisfies" | Yes | 3 |
2695(i) | New | 16.4.6.5 [member.functions] | "As if" unclear in [member.functions] | No | 3 |
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 |
3217(i) | New | 17.3.1 [support.limits.general] | `<memory>` and `<execution>` should define `__cpp_lib_parallel_algorithm` | Yes | 3 |
3635(i) | New | 17.3.2 [version.syn] | Add `__cpp_lib_deduction_guides` to feature test macros | Yes | 3 |
2248(i) | New | 17.3.5 [numeric.limits] | `numeric_limits::is_iec559` misnamed | No | 4 |
3370(i) | New | 17.4.2 [cstdint.syn] | §[cstdint.syn]p2 and §[headers]p5 are not sufficiently clear | No | 3 |
2815(i) | New | 17.6 [support.start.term] | `quick_exit` can deadlock | Yes | 3 |
3084(i) | New | 17.6 [support.start.term] | Termination in C++ is unclear | No | 3 |
3086(i) | New | 17.7.3.2 [new.delete.single] | Possible problem in §[new.delete.single] | Yes | 3 |
2737(i) | New | 17.7.3.2 [new.delete.single] | Consider relaxing object size restrictions for single-object allocation functions | No | 3 |
2303(i) | New | 17.7.3.4 [new.delete.placement] | Explicit instantiation of `std::vector<UserType>` broken? | No | 3 |
2508(i) | New | 17.7.3.5 [new.delete.dataraces] | §[new.delete.dataraces] wording needs to be updated | No | 3 |
3624(i) | New | 17.8 [support.rtti] | Inconsistency of `<typeinfo>`, `<initializer_list>`, and `<compare>` in the standard library | Yes | 3 |
2453(i) | New | 17.11 [support.initlist] | §[iterator.range] and now [iterator.container] aren't available via `<initializer_list>` | No | 3 |
2493(i) | New | 17.11 [support.initlist] | `initializer_list` supports incomplete classes | No | 4 |
3584(i) | New | 17.12.3 [cmp.common] | Clarify common comparison category conversions | Yes | 3 |
3587(i) | New | 17.12.4 [cmp.concept] | `std::three_way_comparable_with<T, U, void>` can be satisfied but can't be modeled | No | 3 |
3491(i) | New | 17.12.6 [cmp.alg] | What is a "decayed type"? | No | 3 |
3653(i) | New | 17.13.2 [coroutine.syn] | `<coroutine>` is freestanding, but uses `std::hash` which is not | No | 3 |
3799(i) | New | 17.15.7 [support.c.headers.other] | Should `<math.h>` provide 3-argument `::hypot` overloads? | No | 3 |
3484(i) | New | 17.15.7 [support.c.headers.other] | Should `<stddef.h>` declare `::nullptr_t`? | Yes | 3 |
3608(i) | New | 18.4.4 [concept.convertible] | `convertible_to` and temporary-bound references | No | 3 |
3459(i) | New | 18.4.4 [concept.convertible] | Why doesn't `std::convertible_to` have semantic requirement when `To` is reference-to-function type? | No | 3 |
2413(i) | New | 19.3 [assertions] | `assert` macro is overconstrained | No | 4 |
3019(i) | New | 19.5.3.4 [syserr.errcat.derived] | Presentation of "program defined classes derived from `error_category`" [syserr.errcat.derived] unclear and contains mistakes | No | 3 |
3053(i) | New | 19.5.4.1 [syserr.errcode.overview] | Prohibit `error_code` construction from rvalues of `error_category` | Yes | 3 |
3162(i) | New | 19.5.8.2 [syserr.syserr.members] | `system_error::system_error(error_code ec)` not explicit | Yes | 3 |
3625(i) | New | 19.6.2 [stacktrace.syn] | Should `<stacktrace>` provide range access function templates? | Yes | 3 |
3507(i) | New | 19.6.3.4 [stacktrace.entry.query] | P0881R7 ("stacktrace") does not define "actual file name", "actual line number" | No | 2 |
3626(i) | New | 19.6.4.1 [stacktrace.basic.overview] | Is `std::basic_stacktrace` required to use contiguous storage? | Yes | 3 |
2421(i) | New | 20.2.5 [ptr.align] | Non-specification of handling zero size in `std::align` [ptr.align] | No | 3 |
3192(i) | New | 20.2.8.2 [allocator.uses.construction] | §[allocator.uses.construction] functions misbehave for `const` types | Yes | 3 |
3665(i) | New | 20.2.9.2 [allocator.traits.types] | Is `std::allocator_traits<Alloc>::rebind_alloc` SFINAE-friendly? | No | 3 |
3684(i) | New | 20.2.10.2 [allocator.members] | `std::allocator<T>::allocate_at_least` in constant evaluation | Yes | 3 |
3159(i) | New | 20.3.1.3 [unique.ptr.single] | §[unique.ptr.single] requirements on deleter may be too strict | No | 3 |
2594(i) | New | 20.3.2.2 [util.smartptr.shared] | Contradicting definition of empty `shared_ptr` on `shared_ptr(nullptr, d)` | Yes | 3 |
2906(i) | New | 20.3.2.2.2 [util.smartptr.shared.const] | There is no ability to supply an allocator for the control block when constructing a `shared_ptr` from a `unique_ptr` | No | 3 |
2751(i) | New | 20.3.2.2.3 [util.smartptr.shared.dest] | `shared_ptr` deleter not specified to observe expired `weak_ptr` instances | No | 4 |
3210(i) | New | 20.3.2.2.7 [util.smartptr.shared.create] | `allocate_shared` is inconsistent about removing `const` from the pointer passed to allocator `construct` and `destroy` | Yes | 3 |
3216(i) | New | 20.3.2.2.7 [util.smartptr.shared.create] | Rebinding the allocator before calling `construct`/`destroy` in `allocate_shared` | Yes | 3 |
3734(i) | New | 20.3.4.1 [out.ptr.t] | Inconsistency in `inout_ptr` and `out_ptr` for empty case | Yes | 2 |
3681(i) | New | 20.4.1 [mem.res.syn] | Further considerations on LWG 3679 | No | 4 |
3637(i) | New | 20.4.2 [mem.res.class] | `pmr::memory_resource::do_allocate` needs clarification | No | 3 |
3634(i) | New | 20.4.4 [mem.res.global] | When are static-duration `memory_resource` objects destroyed? | No | 3 |
2848(i) | New | 20.4.5.2 [mem.res.pool.options] | Pass-through threshold for pool allocator | No | 3 |
2845(i) | New | 21.3.2 [meta.rqmts] | `enable_if`, `result_of`, `common_type` and `aligned_storage` do not meet the definition of `TransformationTrait` | No | 3 |
3099(i) | New | 21.3.3 [meta.type.synop] | `is_assignable<Incomplete&, Incomplete&>` | Yes | 2 |
2939(i) | New | 21.3.3 [meta.type.synop] | Some type-completeness constraints of traits are overspecified | No | 2 |
3697(i) | New | 21.3.5.4 [meta.unary.prop] | Preconditions of `reference_constructs_from_temporary/reference_converts_from_temporary` seem wrong | Yes | 3 |
2827(i) | New | 21.3.5.4 [meta.unary.prop] | `is_trivially_constructible` and non-trivial destructors | No | 3 |
2496(i) | New | 21.3.5.4 [meta.unary.prop] | Certain hard-to-avoid errors not in the immediate context are not allowed to be triggered by the evaluation of type traits | No | 3 |
3400(i) | New | 21.3.7 [meta.rel] | Does `is_nothrow_convertible` consider destruction of the destination type? | No | 3 |
3174(i) | New | 21.3.7 [meta.rel] | Precondition on `is_convertible` is too strong | Yes | 3 |
3205(i) | New | 21.3.8.7 [meta.trans.other] | `decay_t` in the new `common_type` fallback should be `remove_cvref_t` | Yes | 3 |
2599(i) | New | 22.2.6 [declval] | Library incomplete type permission phrase is unclear | No | 3 |
3342(i) | New | 22.3.2 [pairs.pair] | Library wording uses "initializes `x` with `y`", which is underspecified | No | 3 |
2766(i) | New | 22.3.3 [pairs.spec] | Swapping non-swappable types | Yes | 3 |
3166(i) | New | 22.3.4 [pair.astuple] | No such descriptive element as Value: | No | 3 |
3378(i) | New | 22.4.2 [tuple.syn] | `tuple_size_v/tuple_element_t` should be available when `tuple_size/tuple_element` are | Yes | 3 |
3583(i) | New | 22.4.4.1 [tuple.cnstr] | Clarify if/when short circuiting applies to conditions in Constraints: elements | No | 3 |
2528(i) | New | 22.4.4.1 [tuple.cnstr] | Order of `std::tuple` construction unspecified | No | 3 |
2933(i) | New | 22.4.5 [tuple.creation] | PR for LWG 2773 could be clearer | Yes | 3 |
3728(i) | New | 22.4.9 [tuple.rel] | Can't make neither head nor tail of the description of `operator<=>(tuple, tuple)` | Yes | 4 |
2472(i) | New | 22.4.9 [tuple.rel] | Heterogeneous comparisons in the standard library can result in ambiguities | No | 3 |
2811(i) | New | 22.5.3.2 [optional.ctor] | "Selected constructor" wording is incorrect for `optional`/`variant`/`any` | Yes | 3 |
2746(i) | New | 22.5.3.4 [optional.assign] | Inconsistency between requirements for `emplace` between `optional` and `variant` | Yes | 3 |
3424(i) | New | 22.5.3.6 [optional.observe] | `optional::value_or` should never return a cv-qualified type | Yes | 3 |
3613(i) | New | 22.5.4 [optional.nullopt] | Specify that `nullopt_t` is copyable | Yes | 3 |
3627(i) | New | 22.5.9 [optional.specalg] | Inconsistent specifications for `std::make_optional` overloads | Yes | 3 |
2881(i) | New | 22.6.3 [variant.variant] | Adopt section III of P0308R0 | No | 3 |
3215(i) | New | 22.6.3.2 [variant.ctor] | `variant` default constructor has vague `constexpr` requirements | No | 2 |
3069(i) | New | 22.6.3.4 [variant.assign] | Move assigning `variant`'s subobject corrupts data | Yes | 3 |
3416(i) | New | 22.7.4 [any.class] | The Throws: specification of `std::any` does not mention allocation | No | 3 |
3423(i) | New | 22.7.5 [any.nonmembers] | `std::any_cast` should never return a cv-qualified type | Yes | 3 |
3688(i) | New | 22.8.4 [expected.bad] | Exception specifications of copy/move member functions of `std::bad_expected_access` | No | 2 |
3805(i) | New | 22.10 [function.objects] | Expression evaluating to a call wrapper is a prvalue, not an object | No | 4 |
3655(i) | New | 22.10.4 [func.require] | The `INVOKE` operation and `union` types | No | 3 |
3046(i) | New | 22.10.6 [refwrap] | Do not require `reference_wrapper` to support non-referenceable function types | Yes | 3 |
2491(i) | New | 22.10.8 [comparisons] | `std::less<T*>` in constant expression | Yes | 3 |
2547(i) | New | 22.10.8 [comparisons] | Container requirements (and other library text) should say "strict total order", not just "total order" | No | 3 |
3493(i) | New | 22.10.17.3.2 [func.wrap.func.con] | The constructor of `std::function` taking an `F` is missing a constraint | Yes | 3 |
3680(i) | New | 22.10.17.4.3 [func.wrap.move.ctor] | Constructor of `move_only_function` with empty `ref`-qualifier is over-constrained | Yes | 2 |
3642(i) | New | 22.10.17.4.3 [func.wrap.move.ctor] | `move_only_function` assignment operators seem to be defined suboptimal | Yes | 3 |
3512(i) | New | 22.10.19 [unord.hash] | Incorrect exception safety guarantee for unordered containers | No | 3 |
3456(i) | New | 22.13.3 [charconv.from.chars] | Pattern used by `std::from_chars` is underspecified | Yes | 3 |
3651(i) | New | 22.14 [format] | Unspecified lifetime guarantees for the format string | No | 3 |
3641(i) | New | 22.14.1 [format.syn] | Add `operator==` to `format_to_n_result` | Yes | 3 |
3644(i) | New | 22.14.2.2 [format.string.std] | `std::format` does not define "integer presentation type" | Yes | 2 |
3586(i) | New | 22.14.2.2 [format.string.std] | Formatting character alignment inconsistencies | Yes | 2 |
3412(i) | New | 22.14.2.2 [format.string.std] | §[format.string.std] references to "Unicode encoding" unclear | No | 3 |
3806(i) | New | 22.14.6.2 [format.formattable] | Should concept `formattable<T, charT>` default to `char`? | Yes | 2 |
3706(i) | New | 22.14.6.3 [format.formatter.spec] | How does `std::format` work with character arrays of unknown bound? | No | 3 |
3631(i) | New | 22.14.8.1 [format.arg] | `basic_format_arg(T&&)` should use `remove_cvref_t<T>` throughout | Yes | 3 |
3718(i) | New | 22.14.8.1 [format.arg] | P2418R2 broke the overload resolution for `std::basic_format_arg` | Yes | 2 |
2513(i) | New | 23.1 [strings.general] | Missing requirements for `basic_string::value_type` | No | 4 |
3694(i) | New | 23.2.2 [char.traits.require] | Should `traits_type::length` be customizable? | No | 4 |
2959(i) | New | 23.2.4.4 [char.traits.specializations.char16.t] | `char_traits<char16_t>::eof` is a valid UTF-16 code unit | No | 3 |
3457(i) | New | 23.3.3 [string.view.template] | `*this` is not invalidated | Yes | 3 |
3339(i) | New | 23.4.3 [basic.string] | Move-constructed empty-container capacity | No | 3 |
3451(i) | New | 23.4.3 [basic.string] | Inconsistently explicit deduction guides | Yes | 3 |
3663(i) | New | 23.4.3.3 [string.cons] | `basic_string(const T&, const Alloc&)` turns moves into copies | Yes | 3 |
3645(i) | New | 23.4.3.5 [string.capacity] | `resize_and_overwrite` is overspecified to call its callback with lvalues | Yes | 2 |
3662(i) | New | 23.4.3.7.2 [string.append] | `basic_string::append/assign(NTBS, pos, n)` suboptimal | Yes | 3 |
2237(i) | New | 23.5 [c.strings] | `<cuchar>` macros | No | 4 |
3059(i) | New | 24.2 [container.requirements] | Wrong requirements for map-like associative container assignment? | No | 3 |
2269(i) | New | 24.2.2.1 [container.requirements.general] | Container iterators and argument-dependent lookup | No | 4 |
3431(i) | New | 24.2.2.4 [container.opt.reqmts] | `<=>` for containers should require `three_way_comparable<T>` instead of `<=>` | Yes | 2 |
3297(i) | New | 24.2.4 [sequence.reqmts] | Useless sequence container requirement | Yes | 3 |
2705(i) | New | 24.2.4 [sequence.reqmts] | Questionable precondition on Sequence containers `a.assign(n, t)` | Yes | 3 |
3438(i) | New | 24.2.5.1 [container.node.overview] | §[container.node.overview] missing `multiset`/`map` cases | No | 3 |
3227(i) | New | 24.2.7 [associative.reqmts] | Ambiguity issue for `extract` in ordered and unordered associative containers | Yes | 3 |
2362(i) | New | 24.2.7 [associative.reqmts] | unique, associative `emplace()` should not move/copy the `mapped_type` constructor arguments when no insertion happens | No | 3 |
3691(i) | New | 24.2.7.1 [associative.reqmts.general] | Replacement of keys in associative containers | Yes | 3 |
3577(i) | New | 24.2.7.1 [associative.reqmts.general] | Merging an (unordered) associative container with itself | No | 3 |
3578(i) | New | 24.2.7.1 [associative.reqmts.general] | Iterator SCARYness in the context of associative container merging | No | 3 |
3622(i) | New | 24.2.8.1 [unord.req.general] | Misspecified transitivity of equivalence in §[unord.req.general] | Yes | 2 |
3219(i) | New | 24.3.7.1 [array.overview] | `std::array` overview container requirements are incorrect | Yes | 3 |
3308(i) | New | 24.3.8.4 [deque.modifiers] | `vector` and `deque` iterator `erase` invalidates elements even when no change occurs | Yes | 3 |
3758(i) | New | 24.3.11.3 [vector.capacity] | Element-relocating operations of `std::vector` and `std::deque` should conditionally require Cpp17CopyInsertable in their preconditions | No | 3 |
3638(i) | New | 24.3.12 [vector.bool] | `vector<bool>::swap(reference, reference)` is useless | Yes | 3 |
3531(i) | New | 24.4.4.1 [map.overview] | LWG 3025 broke previous valid code | Yes | 3 |
2713(i) | New | 24.5 [unord] | More missing allocator-extended constructors for unordered containers | Yes | 3 |
3189(i) | New | 24.6.7 [priority.queue] | Missing requirement for `std::priority_queue` | No | 3 |
3723(i) | New | 24.6.7.4 [priqueue.members] | `priority_queue::push_range` needs to `append_range` | Yes | 2 |
3802(i) | New | 24.6.9 [flat.map] | `flat_foo` allocator-extended constructors lack move semantics | No | 2 |
3803(i) | New | 24.6.9 [flat.map] | `flat_foo` constructors taking `KeyContainer` lack `KeyCompare` parameter | No | 1 |
3804(i) | New | 24.6.9 [flat.map] | `flat_foo` missing some allocator-extended deduction guides | No | 2 |
3813(i) | New | 24.7.3.1 [span.overview] | `std::span<volatile T, E>` is made ill-formed by P2278R4 when `T` is a normal class type | No | 2 |
3203(i) | New | 24.7.3.1 [span.overview] | `span` element access invalidation | Yes | 2 |
3615(i) | New | 25.3.2.1 [incrementable.traits] | The last specialization of `incrementable_traits` has wrong operand types | Yes | 3 |
3287(i) | New | 25.3.2.3 [iterator.traits] | Exposition-only `cpp17-input-iterator` concept is needlessly complex | Yes | 3 |
3716(i) | New | 25.3.4.11 [iterator.concept.forward] | §[iterator.concept.forward][forward.iterators] Two different definitions of multi-pass guarantee | No | 3 |
3197(i) | New | 25.4.3 [iterator.operations] | `std::prev` should not require `BidirectionalIterator` | Yes | 3 |
3439(i) | New | 25.4.3 [iterator.operations] | "`Distance`" template parameter is underspecified | No | 3 |
3344(i) | New | 25.4.3 [iterator.operations] | `advance(i, most-negative)` and `prev(i, most-negative)` | Yes | 3 |
2858(i) | New | 25.5.1 [reverse.iterators] | LWG 2472: actually an incompatibility with C++03 | Yes | 4 |
3623(i) | New | 25.5.1.1 [reverse.iterators.general] | Uses of `std::reverse_iterator` with containers should not require manually including `<iterator>` | Yes | 3 |
2595(i) | New | 25.5.1.2 [reverse.iterator] | `reverse_iterator::operator[]`'s return type revisited | Yes | 3 |
3602(i) | New | 25.5.1.4 [reverse.iter.cons] | `reverse_iterator`'s converting assignment is overconstrained | Yes | 3 |
3725(i) | New | 25.5.1.6 [reverse.iter.elem] | `reverse_iterator::operator->` should not use `prev` for non-pointer iterators | Yes | 3 |
3749(i) | New | 25.5.5 [iterators.common] | `common_iterator` should handle integer-class difference types | Yes | 2 |
3783(i) | New | 25.5.5.1 [common.iterator] | `views::common` may not be a range adaptor object | Yes | 3 |
3748(i) | New | 25.5.5.6 [common.iter.cmp] | `common_iterator` and `counted_iterator`' `operator-` are missing cast to return type | Yes | 3 |
3107(i) | New | 25.6.4 [istreambuf.iterator] | `istreambuf_iterator` has public exposition-only member | Yes | 4 |
3188(i) | New | 25.6.4 [istreambuf.iterator] | `istreambuf_iterator::pointer` should not be unspecified | Yes | 3 |
2366(i) | New | 25.6.4 [istreambuf.iterator] | `istreambuf_iterator` end-of-stream equality | No | 3 |
3108(i) | New | 25.6.4.2 [istreambuf.iterator.proxy] | `istreambuf_iterator::proxy::operator*` should be `const` | Yes | 3 |
3537(i) | New | 25.7 [iterator.range] | §[iterator.range] Missing `noexcept` for `std::rbegin`/`rend` for arrays and `initializer_list` | No | 3 |
2457(i) | New | 25.7 [iterator.range] | `std::begin()` and `std::end()` do not support multi-dimensional arrays correctly | No | 3 |
3729(i) | New | 26.2 [ranges.syn] | `std::tuple_element_t<std::ranges::subrange<I, S, K>>` should remove top-level cv-qualifiers | Yes | 4 |
3787(i) | New | 26.5.7.2 [range.utility.conv.to] | `ranges::to`'s template parameter `C` should not be a reference type | Yes | 3 |
3722(i) | New | 26.5.7.2 [range.utility.conv.to] | `ranges::to` `reserve`s the wrong size | Yes | 4 |
3614(i) | New | 26.6.4.2 [range.iota.view] | `iota_view::size` and the most negative signed integer values | Yes | 3 |
3609(i) | New | 26.6.4.4 [range.iota.sentinel] | `std::ranges::iota_view<int, long>` has non-subtractable `iterator` and `sentinel` types | Yes | 3 |
3772(i) | New | 26.6.5.2 [range.repeat.view] | `repeat_view`'s piecewise constructor is missing Postconditions | Yes | 2 |
3763(i) | New | 26.6.5.3 [range.repeat.iterator] | Should range adaptor iterators only provide `iterator_category` when its `difference_type` is not an integer-class type? | Yes | 3 |
3489(i) | New | 26.6.6.3 [range.istream.iterator] | Improve `istream_view` wording | Yes | 3 |
3829(i) | New | 26.7.7.2 [range.as.rvalue.view] | `as_rvalue_view::end` should improve non-common case | Yes |  |
3730(i) | New | 26.7.12.2 [range.drop.view] | `std::ranges::drop_view` may have different size type from its underlying view | Yes | 3 |
3666(i) | New | 26.7.14 [range.join] | `join_view`'s difference type is too small | No | 2 |
3700(i) | New | 26.7.14.2 [range.join.view] | The `const begin` of the `join_view` family does not require `InnerRng` to be a range | Yes | 3 |
3791(i) | New | 26.7.14.3 [range.join.iterator] | `join_view::iterator::operator--` may be ill-formed | Yes | 3 |
3685(i) | New | 26.7.16.2 [range.lazy.split.view] | In `lazy_split_view`, CTAD doesn't work when given an `input_range` input and a `tiny-range` pattern | Yes | 3 |
3599(i) | New | 26.7.16.2 [range.lazy.split.view] | The `const` overload of `lazy_split_view::begin` should be constrained by `const Pattern` | Yes | 3 |
3686(i) | New | 26.7.16.3 [range.lazy.split.outer] | In `lazy_split_view`, comparing a default-constructed `outer-iterator` or `inner-iterator` with `std::default_sentinel` results in null pointer dereference | Yes | 3 |
3830(i) | New | 26.7.20.2 [range.reverse.view] | `reverse_view` should not cache when `ranges::next` has constant time complexity | Yes |  |
3797(i) | New | 26.7.22.2 [range.elements.view] | `elements_view` insufficiently constrained | Yes | 2 |
3731(i) | New | 26.7.23.2 [range.zip.view] | `zip_view` and `adjacent_view` are underconstrained | Yes | 3 |
2963(i) | New | 27 [algorithms] | Algorithms with underspecified iterator requirements | No | 3 |
3793(i) | New | 27.6.5 [alg.foreach] | Requirements for some algorithms' `Size` template parameters are unclear | No | 3 |
3089(i) | New | 27.7.1 [alg.copy] | `copy_n` should require non-overlapping ranges | Yes | 3 |
2267(i) | New | 27.8.2.4 [partial.sort.copy] | `partial_sort_copy` underspecified for ranges of two different types | No | 3 |
3487(i) | New | 27.10 [numeric.ops] | Missing precondition on input and output aliasing of [numeric.ops] | No | 3 |
3060(i) | New | 27.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 | 27.10.11 [transform.inclusive.scan] | Incorrect requirements for `transform_inclusive_scan` without initial value | Yes | 3 |
3628(i) | New | 27.11 [specialized.algorithms] | "Effects: Equivalent to:" and uninitialized memory algorithms | No | 3 |
3063(i) | New | 27.11 [specialized.algorithms] | Parallel algorithms in `<memory>` are underspecified | No | 3 |
3064(i) | New | 27.11 [specialized.algorithms] | How do uninitialized memory algorithms obtain pointer without undefined behavior? | No | 3 |
3647(i) | New | 27.11.2 [special.mem.concepts] | `nothrow-input-iterator` constraints should not mention copying | Yes | 3 |
3436(i) | New | 27.11.8 [specialized.construct] | `std::construct_at` should support arrays | Yes | 2 |
2714(i) | New | 28.4.6 [complex.ops] | `complex` stream extraction underspecified | Yes | 3 |
2846(i) | New | 28.4.9 [cmplx.over] | Undefined phrase "effectively cast" | Yes | 3 |
3809(i) | New | 28.5.4.4 [rand.eng.sub] | Is `std::subtract_with_carry_engine<uint16_t>` supposed to work? | No | 3 |
3402(i) | New | 28.5.9.3.4 [rand.dist.bern.negbin] | Wording for `negative_binomial_distribution` is unclear as a consequence of LWG 2406 resolution | No | 3 |
2423(i) | New | 28.6.5 [template.slice.array] | Missing specification `slice_array`, `gslice_array`, `mask_array`, `indirect_array` copy constructor | Yes | 4 |
3693(i) | New | 28.7 [c.math] | §[c.math] Can any of `float/double/long double` overloads be fused into template overloads? | No | 2 |
3790(i) | New | 28.7.1 [cmath.syn] | P1467 accidentally changed `nexttoward`'s signature | Yes | 1 |
2847(i) | New | 28.7.1 [cmath.syn] | `sin(float)` should call `sinf(float)` | No | 3 |
3234(i) | New | 28.7.1 [cmath.syn] | Sufficient Additional Special Math Overloads | No | 3 |
3223(i) | New | 28.7.1 [cmath.syn] | `lerp` should not add the "sufficient additional overloads" | No | 2 |
2923(i) | New | 28.7.1 [cmath.syn] | `noexcept` is inconsistently applied across headers which import components of the C standard library | No | 4 |
3093(i) | New | 28.7.2 [c.math.abs] | LWG 2294/2192 missed a `std::abs` overload | No | 3 |
3172(i) | New | 28.7.3 [c.math.hypot3] | 3-arg `std::hypot` is underspecified compared to the 2-arg overload | Yes | 3 |
3066(i) | New | 28.7.6 [sf.cmath] | "report a domain error" in [sf.cmath]/1 is underspecified | No | 3 |
2592(i) | New | 29.2 [time.syn] | Require that `chrono::duration_cast`s from smaller durations to larger durations do not overflow | Yes | 4 |
3090(i) | New | 29.5.2 [time.duration.cons] | What is §[time.duration.cons]p4's "no overflow is induced in the conversion" intended to mean? | Yes | 3 |
3503(i) | New | 29.5.8 [time.duration.cast] | `chrono::ceil` has surprising requirement | No | 3 |
3678(i) | New | 29.11.5.1 [time.zone.overview] | Constructors of `std::chrono::time_zone` might be overly unspecified | No | 4 |
3831(i) | New | 29.12 [time.format] | Two-digit formatting of negative `year` is ambiguous | Yes |  |
3353(i) | New | 30.3.1 [locale] | `locale`'s copy assignment operator should return `locale&` | Yes | 3 |
3673(i) | New | 30.3.1.3 [locale.cons] | §[locale.cons] Ambiguous argument in Throws for locale+name+category constructor | Yes | 3 |
3676(i) | New | 30.3.1.3 [locale.cons] | Name of locale composed using `std::locale::none` | No | 3 |
3674(i) | New | 30.3.1.4 [locale.members] | Removal of requirement for locale names for construction of locales not explained | Yes | 2 |
3337(i) | New | 30.4.2.5.3 [locale.codecvt.virtuals] | What is "is initialized" supposed to mean? | No | 3 |
3689(i) | New | 30.4.3.2.3 [facet.num.get.virtuals] | `num_get` overflow determination unclear and incorrect | No | 3 |
3214(i) | New | 30.4.3.2.3 [facet.num.get.virtuals] | §[facet.num.get.virtuals] doesn't say what it means for digit grouping to be consistent | No | 4 |
2703(i) | New | 30.4.3.3.3 [facet.num.put.virtuals] | No provision for fill-padding when `boolalpha` is set | No | 3 |
2702(i) | New | 30.4.3.3.3 [facet.num.put.virtuals] | `num_put::do_put(..., bool)` performs ill-formed `do_put` call | No | 3 |
3275(i) | New | 30.4.6.2.3 [locale.time.get.virtuals] | Why does `time_get::do_get` require a valid pointer when none of the others do? | Yes | 3 |
2983(i) | New | 30.4.7.3.2 [locale.money.put.virtuals] | `money_put::do_put` underspecified | Yes | 3 |
2691(i) | New | 30.4.7.4 [locale.moneypunct] | `money_base::space` and `do_put`: U+0020 versus `fill` | Yes | 3 |
3696(i) | New | 31.2.2 [stream.types] | "Basic integral types" should not be used | No | 3 |
3675(i) | New | 31.5.2.6 [ios.base.storage] | `std::ios_base::iword/pword` might be misspecified | Yes | 4 |
2675(i) | New | 31.5.2.7 [ios.base.callback] | `register_callback` can fail | No | 3 |
2504(i) | New | 31.6.3 [streambuf] | `basic_streambuf` is not an abstract class | No | 3 |
3658(i) | New | 31.6.3.3.5 [streambuf.pub.put] | `basic_streambuf::sputn` is both overspecified and underspecified | Yes | 3 |
2342(i) | New | 31.7.6.2 [ostream] | User conversion to `wchar_t const*` or to `wchar_t` not invoked for `operator<<` | Yes | 4 |
2497(i) | New | 31.7.6.2.4 [ostream.sentry] | Use of `uncaught_exception()` | Yes | 3 |
3501(i) | New | 31.7.6.5 [ostream.manip] | `basic_syncbuf`-related manipulators refer to some `Allocator` without defining it | Yes | 3 |
2984(i) | New | 31.7.8 [ext.manip] | `put_money(99)` is unnecessarily undefined | Yes | 3 |
3309(i) | New | 31.8 [string.streams] | Is `<ios>` implicitly `#include`d by `<sstream>`, `<fstream>` etc.? | No | 3 |
3097(i) | New | 31.8.2.5 [stringbuf.virtuals] | `basic_stringbuf seekoff` effects trigger undefined behavior and have contradictory returns | No | 3 |
3496(i) | New | 31.11.2.4 [syncstream.syncbuf.members] | What does "uniquely associated" mean for `basic_syncbuf::emit()`? | No | 3 |
3497(i) | New | 31.11.2.4 [syncstream.syncbuf.members] | Postconditions for `basic_syncbuf::emit()` | No | 3 |
3098(i) | New | 31.12.6.5.9 [fs.path.decompose] | Misleading example for `filesystem::path::filename()` | Yes | 3 |
3699(i) | New | 31.12.6.5.11 [fs.path.gen] | `lexically_relative` on UNC drive paths (`\\?\C:\...`) results in a default-constructed value | No | 3 |
3794(i) | New | 31.12.6.6 [fs.path.itr] | `std::filesystem::path::iterator::reference` should be allowed to be `std::filesystem::path` | Yes | 3 |
2947(i) | New | 31.12.8.1 [fs.enum.path.format] | Clarify several filesystem terms | No | 3 |
3078(i) | New | 31.12.10 [fs.class.directory.entry] | `directory_entry`, `directory_iterator` and `recursive_directory_iterator` perform needless path copies | No | 3 |
3668(i) | New | 31.12.11.2 [fs.dir.itr.members] | `[recursive_]directory_iterator` constructors refer to undefined `options` | No | 3 |
3056(i) | New | 31.12.13.5 [fs.op.copy.file] | `copy_file()` copies which attributes? | Yes | 3 |
3744(i) | New | 31.12.13.6 [fs.op.copy.symlink] | `copy_symlink(junction, new_symlink)`'s behavior is unclear | No | 3 |
2490(i) | New | 32 [re] | `<regex>` needs lots of `noexcept` | No | 3 |
3606(i) | New | 32.2 [re.req] | Missing `regex_traits::locale_type` requirements | No | 3 |
2431(i) | New | 32.2 [re.req] | Missing regular expression traits requirements | No | 3 |
3605(i) | New | 32.4.3 [re.matchflag] | `regex_constants::match_prev_avail` is underspecified | No | 3 |
3261(i) | New | 32.7 [re.regex] | `regex` components' `noexcept` annotations appear broken for POCMA or throwing `BidirectionalIterator` | No | 3 |
3341(i) | New | 32.7.2 [re.regex.construct] | `basic_regex` range constructor: Missing requirements for iterator types | No | 3 |
3630(i) | New | 32.7.2 [re.regex.construct] | Inconsistent `basic_regex` construction and assignment from iterator range | No | 4 |
3603(i) | New | 32.7.2 [re.regex.construct] | Matching of null characters by regular expressions is underspecified | No | 3 |
3604(i) | New | 32.7.2 [re.regex.construct] | What is the effect of an invalid value of type `syntax_option_type`? | No | 3 |
3204(i) | New | 32.8 [re.submatch] | `sub_match::swap` only swaps the base class | Yes | 3 |
3126(i) | New | 32.8 [re.submatch] | There's no `std::sub_match::compare(string_view)` overload | Yes | 3 |
2216(i) | New | 32.10.4 [re.alg.replace] | `regex_replace(basic_string)` allocator handling | No | 3 |
2986(i) | New | 32.12 [re.grammar] | Handling of multi-character collating elements by the `regex` FSM is underspecified | No | 4 |
2987(i) | New | 32.12 [re.grammar] | Relationship between `traits_inst.lookup_collatename` and the `regex` FSM is underspecified with regards to `ClassAtomCollatingElement` | No | 3 |
2546(i) | New | 32.12 [re.grammar] | Implementability of locale-sensitive UnicodeEscapeSequence matching | No | 4 |
2819(i) | New | 33.2.5 [thread.req.lockable] | Unspecified Return type: elements | Yes | 3 |
3499(i) | New | 33.2.5.4 [thread.req.lockable.timed] | Timed lockable and mutex requirements are imprecise about `duration` and `time_point` | No | 3 |
3516(i) | New | 33.4.3.2 [thread.thread.id] | `thread::id` spaceship may be inconsistent with equality | Yes | 3 |
3475(i) | New | 33.4.3.3 [thread.thread.constr] | `std::thread`'s constructor needs to be able to report general memory allocation failures | Yes | 3 |
3633(i) | New | 33.5 [atomics] | Atomics are copy constructible and copy assignable from `volatile` atomics | Yes | 3 |
3220(i) | New | 33.5.2 [atomics.syn] | P0558 broke conforming C++14 uses of atomic `shared_ptr` | Yes | 3 |
3268(i) | New | 33.5.4 [atomics.order] | `memory_order::memory_order_foo` broken in C++20 | Yes | 4 |
3263(i) | New | 33.5.6 [atomics.wait] | Atomic waiting function calls should only be unblocked once | Yes | 3 |
3288(i) | New | 33.5.6 [atomics.wait] | `atomic<T>::notify_one` is unimplementable | Yes | 2 |
3508(i) | New | 33.5.7.1 [atomics.ref.generic.general] | `atomic_ref<cv T>` is not well-specified | No | 2 |
3409(i) | New | 33.5.7.2 [atomics.ref.ops] | Too lax description of `atomic_ref<T>::required_alignment` | Yes | 3 |
3047(i) | New | 33.5.8.3 [atomics.types.int] | `atomic` compound assignment operators can cause undefined behavior when corresponding `fetch_meow` members don't | Yes | 3 |
3418(i) | New | 33.5.9 [atomics.nonmembers] | Deprecated free functions in `<atomic>` | Yes | 3 |
3343(i) | New | 33.7.3 [thread.condition.nonmember] | Ordering of calls to `unlock()` and `notify_all()` in Effects element of `notify_all_at_thread_exit()` should be reversed | Yes | 3 |
3504(i) | New | 33.7.4 [thread.condition.condvar] | `condition_variable::wait_for` is overspecified | No | 3 |
3582(i) | New | 33.10.9 [futures.async] | Unclear where `std::async` exceptions are handled | Yes | 3 |
3109(i) | New | D.12.2 [depr.strstreambuf] | `strstreambuf` is copyable | No | 4 |
3095(i) | New | D.12.2.4 [depr.strstreambuf.virtuals] | `strstreambuf` refers to nonexistent member of `fpos`, `fpos::offset` | Yes | 4 |
2507(i) | New | D.22 [depr.locale.stdcvt] | `codecvt_mode` should be a bitmask type | No | 3 |
2478(i) | New | D.23.2 [depr.conversions.string] | Unclear how `wstring_convert` uses `cvtstate` | No | 4 |
2481(i) | New | D.23.2 [depr.conversions.string] | `wstring_convert` should be more precise regarding "byte-error string" etc. | No | 4 |
2479(i) | New | D.23.3 [depr.conversions.buffer] | Unclear how `wbuffer_convert` uses `cvtstate` | No | 4 |
2480(i) | New | D.23.3 [depr.conversions.buffer] | Error handling of `wbuffer_convert` unclear | No | 4 |
3812(i) | New | 3.2.2.5 [fund.ts.v3::propagate_const.const_observers] | [fund.ts.v3] Incorrect constraint on `propagate_const` conversion function | Yes | 3 |
3124(i) | New | 13.7.5 [networking.ts::async.exec.ctx.globals] | [networking.ts] Unclear how `execution_context` is intended to store services | Yes | 3 |
3021(i) | New | 16.2.2 [networking.ts::buffer.reqmts.constbuffersequence] | [networking.ts] Relax pointer equivalence requirement for `ConstBufferSequence` | Yes | 3 |
3027(i) | New | 16.2.4 [networking.ts::buffer.reqmts.dynamicbuffer] | [networking.ts] `DynamicBuffer` `prepare` exception specification | Yes | 3 |
3072(i) | New | 16.2.4 [networking.ts::buffer.reqmts.dynamicbuffer] | [networking.ts] `DynamicBuffer` object lifetimes underspecified | Yes | 3 |
3073(i) | New | 17 [networking.ts::buffer.stream] | [networking.ts] (`async_`)`read` and (`async_`)`write` don't support `DynamicBuffer` lvalues | Yes | 3 |
3444(i) | New | 19.1.2 [networking.ts::socket.streambuf.members] | [networking.ts] `net::basic_socket_streambuf::connect(Args&&...)` effects are wrong | No | 2 |

## Open (78 issues)

Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates
2136(i) | Open | 16.3.2 [structure] | Postconditions vs. exceptions | No | 3 |
3092(i) | Open | 16.3.3.3.4 [bitmask.types] | Unclear semantics of `enum class` bitmask types | Yes | 3 |
2146(i) | Open | 16.4.4.2 [utility.arg.requirements] | Are reference types `Copy`/`Move-Constructible`/`Assignable` or `Destructible`? | No | 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 |
2414(i) | Open | 16.4.6.9 [reentrancy] | Member function reentrancy should be implementation-defined | Yes | 3 |
2730(i) | Open | 17.3.5 [numeric.limits] | `numeric_limits` primary template definition | No | 3 |
2398(i) | Open | 17.8.3 [type.info] | `type_info`'s destructor shouldn't be required to be virtual | Yes | 3 |
2088(i) | Open | 17.10.5 [exception.terminate] | `std::terminate` problem | No | 3 |
3011(i) | Open | 19.3 [assertions] | Requirements for `assert(E)` inconsistent with C | No | 2 |
3821(i) | Open | 20.2.8.2 [allocator.uses.construction] | `uses_allocator_construction_args` should have overload for `pair-like` | Yes | 2 |
2262(i) | Open | 20.3.1.3 [unique.ptr.single] | Requirement for `unique_ptr<T>::get_deleter()(p)` to be able to destroy the `unique_ptr` | Yes | 3 |
2290(i) | Open | 21 [meta] | Top-level "SFINAE"-based constraints should get a separate definition in Clause 17 | Yes | 3 |
2358(i) | Open | 21.3.5.4 [meta.unary.prop] | Apparently-bogus definition of `is_empty` type trait | Yes | 3 |
2077(i) | Open | 21.3.5.4 [meta.unary.prop] | Further incomplete constraints for type traits | No | 3 |
2289(i) | Open | 22.3.2 [pairs.pair] | `constexpr` guarantees of defaulted functions still insufficient | No | 3 |
2990(i) | Open | 22.5.3 [optional.optional] | `optional::value_type` is not always a value type | Yes | 3 |
2829(i) | Open | 22.5.3.6 [optional.observe] | LWG 2740 leaves behind vacuous words | No | 2 |
2833(i) | Open | 22.6.3.2 [variant.ctor] | Library needs to specify what it means when it declares a function `constexpr` | Yes | 2 |
3305(i) | Open | 22.7.5 [any.nonmembers] | `any_cast<void>` | Yes | 2 |
2348(i) | Open | 22.9.2 [template.bitset] | `charT('1')` is not the wide equivalent of `'1'` | Yes | 3 |
3081(i) | Open | 22.13.3 [charconv.from.chars] | Floating point `from_chars` API does not distinguish between overflow and underflow | Yes | 2 |
3082(i) | Open | 22.13.3 [charconv.from.chars] | `from_chars` specification regarding floating point rounding is inconsistent | Yes | 2 |
2994(i) | Open | 23.2 [char.traits] | Needless UB for `basic_string` and `basic_string_view` | Yes | 3 |
2238(i) | Open | 23.5 [c.strings] | Problematic iterator-pair constructor of containers | No | 3 |
1521(i) | Open | 24.2.2.1 [container.requirements.general] | Requirements on internal pointer representations in containers | Yes | 3 |
2321(i) | Open | 24.2.2.1 [container.requirements.general] | Moving containers should (usually) be required to preserve iterators | Yes | 3 |
3742(i) | Open | 24.2.4 [sequence.reqmts] | `deque::prepend_range` needs to permute | Yes | 2 |
2206(i) | Open | 24.2.4 [sequence.reqmts] | Inaccuracy in `initializer_list` constructor requirements | Yes | 3 |
2844(i) | Open | 24.2.7 [associative.reqmts] | Stability of `a_uniq.insert(i, j)` | No | 3 |
2227(i) | Open | 24.2.7 [associative.reqmts] | Stateful comparison objects in associative containers | No | 3 |
2215(i) | Open | 24.2.7 [associative.reqmts] | (unordered) associative container functors should be `CopyConstructible` | Yes | 3 |
1175(i) | Open | 24.2.8 [unord.req] | `unordered` complexity | Yes | 3 |
2198(i) | Open | 24.2.8 [unord.req] | `max_load_factor(z)` makes no strong guarantees, but bans useful behavior | Yes | 3 |
2189(i) | Open | 24.2.8.2 [unord.req.except] | Throwing `swap` breaks unordered containers' state | No | 3 |
617(i) | Open | 24.3.7 [array] | `std::array` is a sequence that doesn't satisfy the sequence requirements? | No | 3 |
2823(i) | Open | 24.3.7.1 [array.overview] | `std::array` initialization is still not permissive enough | Yes | 3 |
3488(i) | Open | 24.3.7.4 [array.special] | Is `array<const int, 0>` swappable or not? | Yes | 3 |
2157(i) | Open | 24.3.7.5 [array.zero] | How does `std::array<T,0>` initialization work when `T` is not default-constructible? | Yes | 3 |
2158(i) | Open | 24.3.11.3 [vector.capacity] | Conditional copy/move in `std::vector` | Yes | 3 |
1102(i) | Open | 24.3.11.3 [vector.capacity] | `std::vector`'s reallocation policy still unclear | Yes | 3 |
1422(i) | Open | 24.3.12 [vector.bool] | `vector<bool>` iterators are not random access | No | 3 |
3161(i) | Open | 24.6.8 [stack] | Container adapters mandate use of `emplace_back` but don't require it | Yes | 3 |
3786(i) | Open | 24.6.9.2 [flat.map.defn] | Flat maps' deduction guide needs to default `Allocator` to be useful | Yes | 2 |
1213(i) | Open | 25.3 [iterator.requirements] | Meaning of valid and singular iterator underspecified | No | 4 |
2962(i) | Open | 25.3.5.3 [input.iterators] | Iterators of Containers of move-only types do not model `InputIterator` | Yes | 2 |
484(i) | Open | 25.3.5.3 [input.iterators] | Convertible to `T` | No | 2 |
2035(i) | Open | 25.3.5.4 [output.iterators] | Output iterator requirements are broken | Yes | 3 |
2038(i) | Open | 25.3.5.4 [output.iterators] | Missing definition for `incrementable` iterator | No | 3 |
2931(i) | Open | 25.4.3 [iterator.operations] | Missed optimization opportunity with single-argument `std::next` | No | 3 |
3733(i) | Open | 26.5.7.2 [range.utility.conv.to] | `ranges::to` misuses `cpp17-input-iterator` | Yes | 2 |
3777(i) | Open | 26.7.31.2 [range.cartesian.view] | Common `cartesian_product_view` produces an invalid range if the first range is input and one of the ranges is empty | Yes | 2 |
1238(i) | Open | 27 [algorithms] | Defining algorithms taking iterator for range | No | 3 |
2173(i) | Open | 27 [algorithms] | The meaning of `operator +` in the description of the algorithms | Yes | 4 |
3049(i) | Open | 27.2 [algorithms.requirements] | Missing wording allowing algorithms to use copies of function objects as substitutes for their parameters | Yes | 3 |
2471(i) | Open | 27.7.1 [alg.copy] | `copy_n`'s number of `InputIterator` increments unspecified | No | 3 |
3029(i) | Open | 27.8.8.3 [pop.heap] | `pop_heap` over-constrains input | Yes | 3 |
2524(i) | Open | 28.5.9.4.2 [rand.dist.pois.exp] | `generate_canonical` can occasionally return 1.0 | No | 2 |
2115(i) | Open | 28.6.8 [template.mask.array] | Undefined behaviour for `valarray` assignments with `mask_array` index? | No | 4 |
2383(i) | Open | 29.5.9 [time.duration.literals] | Overflow cannot be ill-formed for chrono::duration integer literals | No | 3 |
2117(i) | Open | 30.4.3.3.3 [facet.num.put.virtuals] | `ios_base` manipulators should have `showgrouping/noshowgrouping` | No | 3 |
2512(i) | Open | 30.4.6.2.3 [locale.time.get.virtuals] | Y2K bites; what is an "unambiguous year identifier"? | No | 4 |
423(i) | Open | 31 [input.output] | Effects of negative `streamsize` in iostreams | Yes | 3 |
2214(i) | Open | 31.5.4.2 [basic.ios.cons] | Clarify `basic_ios::init` call restrictions | Yes | 4 |
2286(i) | Open | 31.8.2.5 [stringbuf.virtuals] | `stringbuf::underflow()` underspecified | Yes | 4 |
2708(i) | Open | 31.12.12.2 [fs.rec.dir.itr.members] | `recursive_directory_iterator::recursion_pending()` is incorrectly specified | Yes | 2 |
3057(i) | Open | 31.12.13.4 [fs.op.copy] | Correct `copy_options` handling | Yes | 2 |
523(i) | Open | 32 [re] | regex case-insensitive character ranges are unimplementable as specified | No | 4 |
2331(i) | Open | 32.4.2 [re.synopt] | `regex_constants::collate`'s effects are inaccurately summarized | Yes | 3 |
2338(i) | Open | 32.6 [re.traits] | §[re.traits]/7 expects of locale facets something not guaranteed by [locale.facet]/4 | Yes | 3 |
2137(i) | Open | 32.7.3 [re.regex.assign] | Misleadingly constrained post-condition in the presence of exceptions | Yes | 3 |
3698(i) | Open | 32.11 [re.iter] | `regex_iterator` and `join_view` don't work together very well | No | 2 |
2220(i) | Open | 32.11.2.3 [re.tokiter.comp] | Under-specification of `operator==` for `regex_token_iterator` | Yes | 3 |
2265(i) | Open | 33.5.4 [atomics.order] | 29.3p9 appears to rule out some acceptable executions | No | 4 |
2530(i) | Open | 33.10.5 [futures.state] | Clarify observable side effects of releasing a shared state | No | 3 |
3003(i) | Open | 33.10.6 [futures.promise] | `<future>` still has type-erased allocators in `promise` | Yes | 2 |
2532(i) | Open | 33.10.6 [futures.promise] | Satisfying a `promise` at thread exit | Yes | 3 |
3167(i) | Open | 5.2 [fund.ts.v3::memory.observer.ptr] | [fund.ts.v3] Does `observer_ptr` support function types? | No | 3 |

## LEWG (29 issues)

Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates
2152(i) | LEWG | 16.4.4.3 [swappable.requirements] | Instances of standard container types are not swappable | Yes | 3 |
3828(i) | LEWG | 17.4.2 [cstdint.syn] | Sync `intmax_t` and `uintmax_t` with C2x | Yes |  |
3827(i) | LEWG | 17.15.4 [stdalign.h.syn] | Deprecate `<stdalign.h>` and `<stdalign.h>` macros | Yes |  |
3454(i) | LEWG | 20.2.3 [pointer.traits] | `pointer_traits::pointer_to` should be `constexpr` | Yes |  |
2922(i) | LEWG | 21.3.3 [meta.type.synop] | The `*_constant<>` templates do not make use of `template<auto>` | No |  |
3486(i) | LEWG | 21.3.5.4 [meta.unary.prop] | `is_constructible<T[], T...>` may be misleading in C++20 | No |  |
2153(i) | LEWG | 22.2.2 [utility.swap] | Narrowing of the non-member `swap` contract | No | 2 |
532(i) | LEWG | 22.4.9 [tuple.rel] | Tuple comparison | Yes |  | 348
2991(i) | LEWG | 22.6.3.2 [variant.ctor] | `variant` copy constructor missing `noexcept(see below)` | Yes |  |
3776(i) | LEWG | 22.14.6.1 [formatter.requirements] | Avoid parsing format-spec if it is not present or empty | Yes | 3 |
3810(i) | LEWG | 22.14.8.3 [format.args] | CTAD for `std::basic_format_args` | Yes | 3 |
2883(i) | LEWG | 23.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 |  |
2307(i) | LEWG | 24 [containers] | Should the Standard Library use `explicit` only when necessary? | No | 2 |
2885(i) | LEWG | 24 [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 | 24 [containers] | Relational operators for containers should sfinae; if the underlying type is not comparable, neither should the container be | No |  |
3679(i) | LEWG | 26.6.6 [range.istream] | Is `<ranges>` sufficient for `istream_view`? | No | 3 |
3714(i) | LEWG | 26.7.24.2 [range.zip.transform.view] | Non-single-argument constructors for range adaptors should not be `explicit` | Yes | 4 |
2985(i) | LEWG | 27.7.10 [alg.reverse] | `std::reverse` should be permitted to be vectorized | Yes |  |
2973(i) | LEWG | 27.8.6 [alg.merge] | `inplace_merge` exact comparison count complexity prohibits useful real-world optimizations | Yes |  |
3534(i) | LEWG | 27.8.7.4 [set.intersection] | `ranges::set_intersection` and `ranges::set_difference` algorithm requirements are too strict | Yes | 3 |
1484(i) | LEWG | 33.4.3 [thread.thread.class] | Need a way to join a thread with a timeout | No |  |
1459(i) | LEWG | 33.5.4 [atomics.order] | Overlapping evaluations are allowed | No |  | 1458
1488(i) | LEWG | 33.6 [thread.mutex] | Improve interoperability between the C++0x and C1x threads APIs | No |  |
936(i) | LEWG | 33.6.4 [thread.mutex.requirements] | Mutex type overspecified | No |  | 961
961(i) | LEWG | 33.6.4 [thread.mutex.requirements] | Various threading bugs #11 | No |  | 936
1493(i) | LEWG | 33.6.4 [thread.mutex.requirements] | Add `mutex`, `recursive_mutex`, `is_locked` function | No |  |
2095(i) | LEWG | 33.10.6 [futures.promise] | `promise` and `packaged_task` missing constructors needed for uses-allocator construction | Yes | 4 |
3114(i) | LEWG | 16 [networking.ts::buffer] | [networking.ts] Permit efficient composition when using `DynamicBuffer` | Yes |  |
3445(i) | LEWG | 19.2.1 [networking.ts::socket.iostream.cons] | [networking.ts] `net::basic_socket_istream::connect` should be constrained | Yes | 3 |

## Core (1 issues)

Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates
2452(i) | Core | 21 [meta] | `is_constructible`, etc. and default arguments | No | 3 |

## SG1 (5 issues)

Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates
2506(i) | SG1 | 6.9.2 [intro.multithread] | Underspecification of atomics | No | 3 |
2236(i) | SG1 | 33.5.2 [atomics.syn] | `kill_dependency` unconditionally noexcept | No |  |
3485(i) | SG1 | 33.5.7 [atomics.ref.generic] | `atomic_ref` safety should be based on operations that "potentially conflict" rather than lifetime | No | 3 |
3417(i) | SG1 | 33.5.8.2 [atomics.types.operations] | Missing `volatile` atomic deprecations | Yes | 3 |
2533(i) | SG1 | 99 [concurr.ts::futures.unique.future] | [concurr.ts] Constrain threads where `future::then` can run a continuation | No |  |

## SG16 (5 issues)

Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates
3780(i) | SG16 | 22.14.2.2 [format.string.std] | `format`'s width estimation is too approximate and not forward compatible | Yes | 3 |
3639(i) | SG16 | 22.14.2.2 [format.string.std] | Handling of fill character width is underspecified in `std::format` | No | 3 |
3576(i) | SG16 | 22.14.2.2 [format.string.std] | Clarifying fill character in `std::format` | Yes | 2 |
3565(i) | SG16 | 29.12 [time.format] | Handling of encodings in localized formatting of `chrono` types is underspecified | Yes | 2 |
3767(i) | SG16 | 30.3.1.2.1 [locale.category] | `codecvt<charN_t, char8_t, mbstate_t>` incorrectly added to locale | Yes | 3 |

## Deferred (1 issues)

Issue | Status | Section | Title | Proposed Resolution | Priority | Duplicates
2202(i) | Deferred | 33.10.9 [futures.async] | Missing allocator support by `async` | No | 4 |