(Previous meta-issue: #5624)
At the November 2025 meeting, the following LWG issues were resolved in the C++ Working Paper.
❔ Not yet analyzed
❌ Not applicable
If an issue requires no action from implementers, we mark it as N/A.
- Pure wording clarifications with nothing to implement (these can be changes to non-normative text like examples and informative notes, or wording cleanups to normative text that don't impact observable behavior).
- Something that increases the restrictions placed on users, but implementers aren't expected to enforce those restrictions.
- Fixes for obviously broken wording, where implementers would have done the right thing anyways.
😸 Already implemented
Sometimes we cite LWG issues in product code comments as we're implementing their proposed resolutions. When the resolutions are officially accepted, we should remove the citations (as the default assumption is that we're implementing what the Standard says). If something is especially subtle, we can convert the citation to mention the relevant Standard section. Sometimes we should add test coverage, for example when the Standard begins requiring something that we were already doing but weren't explicitly testing for.
- Already implemented, comments need to be removed, and messages need to cite the Standard.
- Implemented without comments.
🩹 Patches an unimplemented feature
🐞 Not yet implemented
- Filed a GitHub issue labeled
LWG
Library Working Group issue
.
(Previous meta-issue: #5624)
At the November 2025 meeting, the following LWG issues were resolved in the C++ Working Paper.
❔ Not yet analyzed
❌ Not applicable
If an issue requires no action from implementers, we mark it as N/A.
std::atomic_refs - iwellmake_sharedshould not refer to a typeU[N]for runtime N😸 Already implemented
Sometimes we cite LWG issues in product code comments as we're implementing their proposed resolutions. When the resolutions are officially accepted, we should remove the citations (as the default assumption is that we're implementing what the Standard says). If something is especially subtle, we can convert the citation to mention the relevant Standard section. Sometimes we should add test coverage, for example when the Standard begins requiring something that we were already doing but weren't explicitly testing for.
pointer_traits::pointer_toshould beconstexprpointer_traits::pointer_toshould beconstexpr#5864variantcopy constructor missingnoexcept(see below)STL/stl/inc/variant
Lines 818 to 819 in ab6dec6
extents::index-castweirdnessstd::midpointshould not acceptconst boolunique_copypasses arguments to its predicate backwardsstd::dynamic_extentshould also be defined in<mdspan>front()andback()are not hardened for zero-lengthstd::arraysoptional<T>toTmay be ill-formed🩹 Patches an unimplemented feature
Recorded this LWG issue in the GitHub issue tracking the feature. That way, we'll remember to verify it, but it doesn't represent net new work.
P1222R4
<flat_set>#2912flat_set::erase(iterator)is underconstrainedP0792R14
function_ref: A Type-Erased Callable Reference #3788function_refconstructors fromnontype_tfunction_refof data member pointer should producenoexceptsignatureP2548R6
copyable_function#3803move_only_functionconstructor should recognize emptycopyable_functionsP2630R4
submdspan#3807P1673R13
<linalg>: Linear Algebra #4170vector_sum_of_squareswordingvector_two_normandmatrix_frob_normP2447R6 Constructing
span<const T>Frominitializer_list<T>#4173span::subspan/first/lastchooses wrong constructor whenTisconst-qualifiedboolP2248R8 Enabling List-Initialization For Algorithms #4513
ranges::replaceandranges::replace_ifP2542R8
views::concat#4514concat_view::end()should be more constrained in order to support noncopyable iteratorsP0843R14
<inplace_vector>#4766inplace_vector(from_range_t, R&& rg)P2300R10
std::execution#4768task::promise_type::unhandled_stopped()should benoexcepttask::connect()task_scheduler::ts-sender::connect()tasktask::promise_type::return_valuedefault template parametertask::promise_type::return_void/valuelack a specificationtaskis not actually started lazilyawaitable-senderconcept should qualify use ofawaitable-receivertypecheck-typesfunction forupon_errorandupon_stoppedis wrongtask::promise_type::uncaught_exceptionseems to be misnamedsch_must not be in moved-from stateSCHED(s)sizeof...(Env) > 1conditionfnincompletion_signaturesbasic-sender::get_completion_signaturesdefinitionDataandChildinmake-senderget_completion_signaturesfold expression from overloaded commasstop-whenneeds to evaluate unstoppable tokensP1928R15
<simd>#5141simd<complex>::real/imagis overconstrainedsimd::partial_loaduses undefined identifierTstd::simd::bit_ceilshould not benoexceptsimd::basic_mask(bool)overload needs to be more constrainedsimd::basic_vecCTAD misses difference type castingconstexpr-wrapper-likeneedsremove_cvref_tinsimd::basic_vecconstructorzero_elementanduninit_elementsimd::alignmentspecialization forbasic_mask<stdfloat>typesP3508R0
constexprFor Raw Memory Algorithms #5148P3372R3
constexprContainers And Adaptors #5296explicit map(const Allocator&)should beconstexprconstexpriteratorsP0447R28
<hive>#5301hive::erase_ifreevaluateend()to avoid UBP3019R14
indirectAndpolymorphic: Vocabulary Types For Composite Class Design #5302indirectunnecessarily requires copy constructionP2996R13
<meta>: Reflection #5606{can_}substitutespecification is ill-formed<meta>should include<compare>meta::access_contextshould be aconsteval-only typemeta::data_member_specallows negative bit-field widthsmeta::define_aggregateshould require a class typemeta::reflect_constant_stringconsiders a string literalmeta::dealiasneeds to work with things that aren't entitiesmeta::alignment_ofshould exclude data member description of bit-fieldmeta::reflect_constant_arraymeta::is_accessibledoes not need to consider incomplete Dmeta::has_identifierdoesn't handle all typesexprandfnformeta::reflect_objectandmeta::reflect_functionmeta::define_aggregatedefine_aggregatemembers must be publicP2988R12
optional<T&>#5607optional<T&>::transformoptional<T&>::emplacestd::optional<NonReturnable&>is ill-formed due tovalue_orstd::optional<T&>::iteratorcan't be a contiguous iterator for someTstd::optional<T&>::swappossibly selects ADL-foundswapP3348R4 C++26 Should Refer To C23, Not C17 #5608
va_startwith C23from_charsshould not parse"0b"base prefixesP3179R9 Parallel Range Algorithms #5610
permutableconstraint for iterator overloads in Parallel Range Algorithmsstd::ranges::destroyshould allow exceptionsranges::rotatedo not handle sized-but-not-sized-sentinel ranges correctlyP2830R10
type_order#5614type_ordertemplateP3111R8 Atomic Reduction Operations #5616
std::atomic_ref<T>::store_keyshould be disabled for constTP2781R9
constant_wrapper#5619integral-constant-likeneeds moreremove_cvref_tconstant_wrapper's pseudo-mutators are underconstrained🐞 Not yet implemented
unlock()andnotify_all()in Effects element ofnotify_all_at_thread_exit()should be reversedunlock()andnotify_all()in Effects element ofnotify_all_at_thread_exit()should be reversed #5863std::make_optionaloverloadsstd::make_optionaloverloads #5851constoverloads ofstd::optionalmonadic operationsconstoverloads ofstd::optionalmonadic operations #5871optional<T&>#5607as_bytes/as_writable_bytesis broken withspan<volatile T>as_bytes/as_writable_bytesis broken withspan<volatile T>#5852basic_const_iteratorshould provideiterator_typebasic_const_iteratorshould provideiterator_type#5853chrono::local_timeshould be constrainedchrono::local_timeshould be constrained #5854layout_stride::mappingshould treat empty mappings as exhaustivelayout_stride::mappingshould treat empty mappings as exhaustive #5855rank == 0,layout_strideis atypically convertiblerank == 0,layout_strideis atypically convertible #5856chrono::hh_mm_ssconstructor is ill-formed for unsigned durationschrono::hh_mm_ssconstructor is ill-formed for unsigned durations #5857bitset(const CharT*)constructor needs to be constrainedbitset(const CharT*)constructor needs to be constrained #5858condition_variable{_any}::wait_{for, until}should take timeout by valuecondition_variable{_any}::wait_{for, until}should take timeout by value #5859allocator_arg_t/allocator_argin the description of uses-allocator constructionallocator_arg_t/allocator_argin the description of uses-allocator construction #5866expectedmay be ill-formedexpectedmay be ill-formed #5873reference_wrapper#4522enable_nonlocking_formatter_optimizationshould be disabled for container adaptorsenable_nonlocking_formatter_optimizationshould be disabled for container adaptors #5860enable_nonlocking_formatter_optimizationforpairandtupleneedsremove_cvref_tenable_nonlocking_formatter_optimizationforpairandtupleneedsremove_cvref_t#5861