(Previous meta-issue: #4759)
At the November 2024 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. Categories:
- 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 - e.g. 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
- 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.
🐞 Not yet implemented
(Previous meta-issue: #4759)
At the November 2024 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. Categories:
std::launderis not needed when using the result ofstd::memcpycontiguous_iteratorshould requireto_address(I{})😸 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 - e.g. when the Standard begins requiring something that we were already doing but weren't explicitly testing for.
std::make_shared_for_overwrite/std::allocate_shared_for_overwrite<memory>: Add different control block types forallocate_shared_for_overwrite#4274, comment removal tracked by Remove comments for LWG-3210, LWG-4024, and LWG-4154 #5127std::packaged_task's constructor from a callable entity should consider decaying<future>: Makepackaged_taskaccept move-only functors #4946, comment removal tracked by Remove comments for LWG-3210, LWG-4024, and LWG-4154 #5127construct/destroyinallocate_sharedallocate_sharedis inconsistent about removingconstfrom the pointer passed to allocatorconstructanddestroy", which we've implemented since 2019. Comment removal tracked by Remove comments for LWG-3210, LWG-4024, and LWG-4154 #5127compare_partial_order_fallback)boolean-testableUsage (for comparison fallback CPOs) #3258printlnignores the locale imbued instd::ostream🩹 Patches an unimplemented feature
ranges::generate_random's helper lambda should specify the return typeranges::generate_random#4512inplace_vector::emplace<inplace_vector>#4766philox_engine#4767philox_engine::max()philox_engine#4767format_parse_context::check_dynamic_specshould require at least one typeunique_ptr::operator*should not allow dangling references🐞 Not yet implemented
std::construct_atshould support arraysstd::construct_atshould support arrays #5110co_yielding elements of an lvaluegeneratoris unnecessarily inefficientco_yielding elements of an lvaluegeneratoris unnecessarily inefficient #5111allocator_arg_toverloads ofgenerator::promise_type::operator newshould not be constrainedallocator_arg_toverloads ofgenerator::promise_type::operator newshould not be constrained #5112std::uninitialized_move/_nand guaranteed copy elisionstd::uninitialized_move/_nand guaranteed copy elision #5113possibly-const-rangeshould prefer returningconst R&possibly-const-rangeshould prefer returningconst Rᏺstd::optionalcomparisons: constrain harderstd::optionalcomparisons: constrain harder #5115has-arrowshould requireoperator->()to beconst-qualifiedhas-arrowshould requireoperator->()to beconst-qualified #5116std::eraseforlistshould specify return type asboolstd::eraseforlistshould specify return type asbool#5117generator::promise_type::yield_value(ranges::elements_of<R, Alloc>)'s nestedgeneratormay be ill-formedgenerator::promise_type::yield_value(ranges::elements_of<R, Alloc>)'s nestedgeneratormay be ill-formed #5118optionalandexpected)optionalandexpected) #5119std::fixedignoresstd::uppercasestd::fixedignoresstd::uppercase#5120zoned_timewith resolution coarser than secondszoned_timewith resolution coarser than seconds #5121std::atomic<T>'s default constructor should be constrainedstd::atomic<T>'s default constructor should be constrained #5123has_unique_object_representations<Incomplete[]>has_unique_object_representations<Incomplete[]>#5124unique_ptr<T&, D>unique_ptr<T&, D>#5125forward_listmodifiersforward_listmodifiers #5126std::subtract_with_carry_enginecodestd::subtract_with_carry_enginecode #5133std::printon POSIX platforms<print>: Investigate optimizing for UTF-8 terminals #5134