(Previous meta-issue: #1965)
At the October 2021 virtual plenary 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
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: #1965)
At the October 2021 virtual plenary 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:
match_results(match_results&&)durationconstructor from representation shouldn't be effectively non-throwingcommon_typeandcommon_referencehave flaws in commonsafe_range<SomeRange&>casesized_rangeare circularbasic_string_view(It begin, End end)😸 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.
unique_ptroperator*()should benoexcept(implemented in implemented the proposed resolution for LWG-2762 #2376)move_iteratoroperator+()has incorrect constraints (comments removed by Remove LWG comments #2269)seed_seq's constructors (implemented in LWG-3422: Issues of seed_seq's constructors #2260)directory_iteratorandrecursive_directory_iteratorare not C++20 ranges (implemented in Implement LWG-3480,directory_iteratorandrecursive_directory_iteratorare ranges #2340)noexcept-specifiers forbasic_syncbuf(comments removed by Remove LWG comments #2269)join_view::iterator::iterator_categoryand::iterator_conceptlie (comments removed by Remove LWG comments #2269)chrono::parseneedsconst charT*andbasic_string_view<charT>overloads (implemented by LWG-3554 Addconst charT*overloads forchrono::parse#2261)ranges::equalandranges::is_permutationshould short-circuit forsized_ranges (implemented in the original PRs Several range algorithms #565 and Implement ranges::is_permutation #892)operator<=>(optional<T>, U)(comments removed by Remove LWG comments #2269)basic_istream_viewneeds to initializevalue_(comments removed by Remove LWG comments #2269)copyable-boxshould be fullyconstexpr(implemented in Implement P2325R3 Views Should Not Be Required To Be Default Constructible #2012)basic_string_viewnot trivially move constructible (comments removed by Remove LWG comments #2269)variantconverting assignment with immovable alternative🩹 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
tupleconstructor constraints forUTypes&&...overloads (filed LWG-3121tupleconstructor constraints forUTypes&&...overloads #2390)std::ref/cref(filed LWG-3146 Excessive unwrapping instd::ref/cref#2391)ranges::distance()cannot be used on a move-only iterator with a sized sentinel (filed LWG-3392ranges::distance()cannot be used on a move-only iterator with a sized sentinel #2392)convertible-to-non-slicingseems to reject valid case (filed LWG-3470convertible-to-non-slicingseems to reject valid case #2393)static_castexpression inconvertible_tohas the wrong operand (filed LWG-3557 Thestatic_castexpression inconvertible_tohas the wrong operand #2394)discard_block_engine(filed LWG-3561 Issue with internal counter indiscard_block_engine#2250)keys_viewexample is broken (filed LWG-3563keys_viewexample is broken #2389)basic_osyncstream::emitshould be an unformatted output function (filed LWG-3570basic_osyncstream::emitshould be an unformatted output function #2395)flush_emitshould setbadbitif theemitcall fails (filed LWG-3571flush_emitshould setbadbitif theemitcall fails #2396)common_iteratorshould be completelyconstexpr-able (filed LWG-3574common_iteratorshould be completelyconstexpr-able #2397)iota_view'siterator's binaryoperator+should be improved (filed LWG-3580iota_view'siterator's binaryoperator+should be improved #2398)constlvalue reference overload ofgetforsubrangedoes not constrainIto becopyablewhenN == 0(filed LWG-3589 Theconstlvalue reference overload ofgetforsubrangedoes not constrainIto becopyablewhenN == 0#2399)split_view::base() const &is overconstrained (filed LWG-3590split_view::base() const &is overconstrained #2400)lazy_split_view<input_view>::inner-iterator::base() &&invalidates outer iterators (filed LWG-3591lazy_split_view<input_view>::inner-iterator::base() &&invalidates outer iterators #2401)lazy_split_viewneeds to check the simpleness ofPattern(filed LWG-3592lazy_split_viewneeds to check the simpleness ofPattern#2402)base() const &andlazy_split_view::outer-iterator::value_type::end()missingnoexcept(filed LWG-3593 Several iterators'base() const &andlazy_split_view::outer-iterator::value_type::end()missingnoexcept#2403)proxyandpostfix-proxyforcommon_iteratorshould be fullyconstexpr(filed LWG-3595 Exposition-only classes proxy and postfix-proxy forcommon_iteratorshould be fullyconstexpr#2264)