(Previous meta-issue: #3214)
At the February 2023 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: #3214)
At the February 2023 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:
<stdalign.h>and<stdbool.h>macros<meow.h>headers aren't part of the repo. Our<cstdalign>does define__alignas_is_definedand our<cstdbool>gets__bool_true_false_are_definedfrom<stdbool.h>, but the<cmeow>wrappers are already deprecated in C++17 mode (we didn't bother to implement removal in C++20 mode) and it's unclear how the UCRT could emit deprecation warnings for these macros. This isn't worth spending more time on, given that deprecation warnings aren't required for conformance (and we already go quite far here).intmax_tanduintmax_twith C2xterminateresize_and_overwriteis overspecified to call its callback with lvaluesValueSwappablerequirement missing forpush_heapandmake_heapstd::atomic_flagclass signal-safe?<version>should not be "all freestanding"std::expected<T, E>::value() &assumesEis copy constructible😸 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.
char_traits::copyprecondition too weakstd::ranges::distance(a, a + 3)priority_queue::push_rangeneeds toappend_rangedeque::prepend_rangeneeds to permuteranges::find_lastshould be renamedbasic_string_viewshould allow explicit conversion when only traits varystd::basic_osyncstream's move assignment operator benoexcept?views::as_constonref_view<T>should returnref_view<const T>views::as_const#3234.idcheck inbasic_format_parse_context::next_arg_idSTL/stl/inc/chrono
Lines 5301 to 5313 in 9ae1b3f
treat_as_floating_point_v. I think this is a remaining (small) defect in the Standardese.expected::transform_erroroverloads🩹 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.
constexprFor<cmath>And<cstdlib>#2530:constexprforstd::intmax_tmath functions in<cinttypes>reference_meows_from_temporaryshould not useis_meowible<mdspan>#2909:std::layout_meow::mappingmisses precondition<flat_map>#2910 and P1222R4<flat_set>#2912:Allocatorto be usefulflat_meowconstructors takingKeyContainerlackKeyCompareparameter<flat_set>#2912:erase_ifforflat_{,multi}setis incorrectly specifiedrange_formatter'sset_separator,set_brackets, andunderlyingfunctions should benoexceptstd::stringviews::cartesian_product#2923:cartesian_product_view::iterator::previs not quite rightcartesian_product_view::iterator's default constructor is overconstrainednexttoward's signature🐞 Not yet implemented
match_resultsmatch_results#3411.Facetis anullptrFacetis anullptr#3463.sub_match::swaponly swaps the base classsub_match::swaponly swaps the base class #3412.basic_format_arg(T&&)should useremove_cvref_t<T>throughoutbasic_format_arg(T&&)should useremove_cvref_t<T>throughout #3460 and noted in P2286R8 Formatting Ranges #2919 (we implement some but not all of the machinery this issue touches).INVOKEoperation anduniontypesINVOKEoperation anduniontypes #3424.ranges::tomisusescpp17-input-iteratorranges::tomisusescpp17-input-iterator#3422.inout_ptrandout_ptrfor empty caseinout_ptrandout_ptrfor empty case #3413.basic_const_iterator::operator==causes infinite constraint recursionbasic_const_iterator::operator==causes infinite constraint recursion #3458.uses_allocator_construction_argsshould have overload forpair-likeuses_allocator_construction_argsshould have overload forpair-like#3415. Should wait for Implement LWG-3677 Is a cv-qualifiedpairspecially handled in uses-allocator construction? #3396 to be merged.template<size_t N> struct formatter<const charT[N], charT>template<size_t N> struct formatter<const charT[N], charT>#3426.std::expected<bool, E1>conversion constructorexpected(const expected<U, G>&)should take precedence overexpected(U&&)withoperator boolstd::expected<bool, E1>conversion constructorexpected(const expected<U, G>&)should take precedence overexpected(U&&)withoperator bool#3433.ranges::tocan still return viewsranges::tocan still return views #3417.chunk_view::inner-iteratormissing customiter_moveanditer_swapchunk_view::inner-iteratormissing customiter_moveanditer_swap#3432.basic_const_iterator<volatile int*>::operator->is ill-formedbasic_const_iterator<volatile int*>::operator->is ill-formed #3427.range_common_reference_tis missingrange_common_reference_tis missing #3416.basic_const_iterator'scommon_typespecialization is underconstrainedbasic_const_iterator'scommon_typespecialization is underconstrained #3428.pairspairs #3419.std::errcconstants related to UNIX STREAMSstd::errcconstants related to UNIX STREAMS #3420.voidifyvoidify#3431.basic_const_iteratorshould have customiter_movebasic_const_iteratorshould have customiter_move#3429.std::ranges::repeat_view<T, IntegerClass>::iteratormay be ill-formedstd::ranges::repeat_view<T, IntegerClass>::iteratormay be ill-formed #3430.const-qualified monadic overloads forstd::expectedconst-qualified monadic overloads forstd::expected#3435.import std;should guarantee initialization of standard iostreams objectsimport std;should guarantee initialization of standard iostreams objects #3436.operator+=complexity for{chunk,stride}_view::iteratoroperator+=complexity for{chunk,stride}_view::iterator#3434.repeat_view's piecewise constructor is missing preconditions_STL_VERIFYcheck.std::basic_format_argsstd::basic_format_args#3414.basic_format_args#3421.adjacent_view,adjacent_transform_view, andslide_viewmissingbaseaccessoradjacent_view,adjacent_transform_view, andslide_viewmissingbaseaccessor #3409.slide_viewmissingbaseaccessor #3410.zip#2252.views::as_constonempty_view<T>should returnempty_view<const T>views::as_constonempty_view<T>should returnempty_view<const T>#3418.views::as_constonempty_view<T>should returnempty_view<const T>#3423.