You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
At the November 2024 meeting, the following LWG issues were resolved in the C++ Working Paper.
❔ Not yet analyzed
Remaining issues:
All done!
❌ 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)
LWG-4064 Clarify that std::launder is not needed when using the result of std::memcpy
LWG-4126 Some feature-test macros for fully freestanding features are not yet marked freestanding
LWG-4141 Improve prohibitions on "additional storage"
Something that increases the restrictions placed on users, but implementers aren't expected to enforce those restrictions
LWG-4170contiguous_iterator should require to_address(I{})
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
LWG-4024 Underspecified destruction of objects created in std::make_shared_for_overwrite/std::allocate_shared_for_overwrite
LWG-3216 Rebinding the allocator before calling construct/destroy in allocate_shared
This also resolved LWG-3210 "allocate_shared is inconsistent about removing const from the pointer passed to allocator construct and destroy", which we've implemented since 2019. Comment removal tracked by Remove comments for LWG-3210, LWG-4024, and LWG-4154 #5127
LWG-4044 Confusing requirements for std::print on POSIX platforms
@StephanTLavavej thinks this should have no effect for Windows; need to double-check
There exist terminals that can only display Unicode via a "native Unicode API", and terminals that can display Unicode simply via the normal means of dumping output. The intent of the issue is that only the former require the determination if a stream refers to such a terminal, and require flushing the "normal" output before invoking such a "native Unicode API" to output Unicode.
In real world terms, "native Unicode API" means "WriteConsoleW on Windows". Non-Windows platforms are supposed to ignore these instructions but it wasn't clear to them that they should, so the issue is trying to clarify that intent.
Of course there are also terminals on Windows that are capable of displaying Unicode via the normal output mechanisms. My machine with the "Beta: Use UTF-8 for language support" feature activated defaults to codepage 65001 in terminals and doesn't need "native Unicode API" to output Unicode. At some point we should start detecting this condition and avoiding the mess of flushing stdout and transcoding to UTF-16 to call WriteConsoleW.
TLDR: We don't need to do anything for correctness with regard to LWG-4044, we may want to make changes for performance.
(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::launder
is not needed when using the result ofstd::memcpy
contiguous_iterator
should 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_task
accept move-only functors #4946, comment removal tracked by Remove comments for LWG-3210, LWG-4024, and LWG-4154 #5127construct
/destroy
inallocate_shared
allocate_shared
is inconsistent about removingconst
from the pointer passed to allocatorconstruct
anddestroy
", 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-testable
Usage (for comparison fallback CPOs) #3258println
ignores 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_spec
should require at least one typeunique_ptr::operator*
should not allow dangling references🐞 Not yet implemented
std::construct_at
should support arraysstd::construct_at
should support arrays #5110co_yield
ing elements of an lvaluegenerator
is unnecessarily inefficientco_yield
ing elements of an lvaluegenerator
is unnecessarily inefficient #5111allocator_arg_t
overloads ofgenerator::promise_type::operator new
should not be constrainedallocator_arg_t
overloads ofgenerator::promise_type::operator new
should not be constrained #5112std::uninitialized_move/_n
and guaranteed copy elisionstd::uninitialized_move/_n
and guaranteed copy elision #5113possibly-const-range
should prefer returningconst R&
possibly-const-range
should prefer returningconst R&
#5114std::optional
comparisons: constrain harderstd::optional
comparisons: constrain harder #5115has-arrow
should requireoperator->()
to beconst
-qualifiedhas-arrow
should requireoperator->()
to beconst
-qualified #5116std::erase
forlist
should specify return type asbool
std::erase
forlist
should specify return type asbool
#5117generator::promise_type::yield_value(ranges::elements_of<R, Alloc>)
's nestedgenerator
may be ill-formedgenerator::promise_type::yield_value(ranges::elements_of<R, Alloc>)
's nestedgenerator
may be ill-formed #5118optional
andexpected
)optional
andexpected
) #5119std::fixed
ignoresstd::uppercase
std::fixed
ignoresstd::uppercase
#5120zoned_time
with resolution coarser than secondszoned_time
with 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_list
modifiersforward_list
modifiers #5126std::subtract_with_carry_engine
codestd::subtract_with_carry_engine
code #5133std::print
on POSIX platforms<print>
: Investigate optimizing for UTF-8 terminals #5134The text was updated successfully, but these errors were encountered: