(Previous meta-issue: #1679)
At the June 2021 virtual plenary meeting, the following LWG issues were resolved in the C++ Working Paper.
❔ Not yet analyzed
For each of these issues, we've determined whether they are:
✖️ 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
We should record 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: #1679)
At the June 2021 virtual plenary meeting, the following LWG issues were resolved in the C++ Working Paper.
❔ Not yet analyzed
For each of these issues, we've determined whether they are:
✖️ Not applicable
If an issue requires no action from implementers, we mark it as N/A. Categories:
{forward_,}list::uniqueqsortandbsearchuses_allocator_construction_argsunspecified::std::" everywhere rule needs tweakingfc.arg()borrowed_{iterator,subrange}_tare overspecified😸 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
viewable_rangemishandles lvalue move-only views (Removal in<ranges>: Remove "per LWG" comments #1967)join_view::iterator'siter_swapis underconstrained (Removal in<ranges>: Remove "per LWG" comments #1967)iota_view::sentinelis not alwaysiota_view's sentinel (Removal in<ranges>: Remove "per LWG" comments #1967)BUILTIN-PTR-MEOWshould not opt the type out of syntactic checks (Removal in cleared comment TRANSITION #2186)split_view<V, P>::inner-iterator<true>::operator++(int)should depend onBase(Removal in<ranges>: Remove "per LWG" comments #1967)counted_iterators refer to the same sequence isn't quite right (Filed as LWG-3543 Definition of whencounted_iterators refer to the same sequence isn't quite right #2184)Implemented without comments
lexicographical_compare_three_wayis overspecifiedstd::fstream& co. should be constructible fromstring_view(Implemented in<fstream>: Implement LWG-3430 #1968)priority_queue(Implemented in Implement P1425 iterator range constructors for stack and queue #1994)noexcept#2080)InputIteratortemplate parameter forpriority_queueconstructors (Implemented in Implement P1425 iterator range constructors for stack and queue #1994)uses_allocator_construction_argshandles rvalue pairs of rvalue references incorrectly (Implemented in implement LWG-3527 #2194)make_from_tuplecan perform (the equivalent of) a C-style cast (Implemented in<tuple>: LWG-3528make_from_tuplecan perform (the equivalent of) a C-style cast #2160)priority_queue(first, last)should constructcwith(first, last)base() const &consistent across iterator wrappers that supportinput_iterators (Implemented in Adopt LWG-3533 Makebase() const &consistent across iterator wrappers that supportinput_iterators #1993)chrono::from_stream()assign zero todurationfor failure? (Implemented in<chrono>LWG-3536: leave duration unchanged on failed parse #2037)format_tomust not copy models ofoutput_iterator<const charT&>constinbasic_format_arg(const T* p)indirectly_readable_traitsshould be SFINAE-friendly for all types (Implemented in Adopt LWG-3541indirectly_readable_traitsshould be SFINAE-friendly for all types #1992)basic_format_argmis-handlesbasic_string_viewwith custom traitsformat-arg-store::argsis unintentionally not exposition-onlyshared_ptrconstruction fromunique_ptrshould move (not copy) the deleter (Implemented in Implement LWG-3548 shared_ptr construction from unique_ptr should move (not copy) the deleter #2007)split_view::outer-iterator::value_type::begin()(Implemented in Adopt LWG-3553 Useless constraint insplit_view::outer-iterator::value_type::begin()#1990){transform,elements}_view::iterator::iterator_conceptshould considerconst-qualification of the underlying range (Implemented in Adopt LWG-3555{transform,elements}_view::iterator::iterator_conceptshould considerconst-qualification of the underlying range #1989)🩹 Patches an unimplemented feature
We should record 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
std::functionconstruction vs assignment (Implemented in LWG-2774std::functionconstruction vs assignment #2098)common_iterator'spostfix-proxyis not quite right (Implemented in Adopt LWG-3546common_iterator'spostfix-proxyis not quite right #1991)<random>classes (Filed as LWG-3519 Incomplete synopses for<random>classes #2179)iter_moveanditer_swapare inconsistent fortransform_view::iterator(Filed as LWG-3520iter_moveanditer_swapare inconsistent fortransform_view::iterator#2180)view_interfaceis overspecified to derive fromview_base(Filed as LWG-3549view_interfaceis overspecified to derive fromview_base#2178)