diff --git a/libcxx/docs/Helpers/Styles.rst b/libcxx/docs/Helpers/Styles.rst --- a/libcxx/docs/Helpers/Styles.rst +++ b/libcxx/docs/Helpers/Styles.rst @@ -17,6 +17,10 @@ font-style: italic; } .complete { background-color: #99FF99; } + .chrono { background-color: #D8BFD8; } + .format { background-color: #FFE4B5; } + .ranges { background-color: #7FFFD4; } + .spaceship { background-color: #B0E0E6; } .. role:: notstarted @@ -33,5 +37,15 @@ .. |Partial| replace:: :partial:`Partial` .. |Complete| replace:: :complete:`Complete` +.. role:: chrono +.. role:: format +.. role:: ranges +.. role:: spaceship + +.. |chrono| replace:: :chrono:`chrono` +.. |format| replace:: :format:`format` +.. |ranges| replace:: :ranges:`ranges` +.. |spaceship| replace:: :spaceship:`spaceship` + .. |sect| unicode:: U+00A7 .. |hellip| unicode:: U+2026 diff --git a/libcxx/docs/Status/Cxx20Issues.csv b/libcxx/docs/Status/Cxx20Issues.csv --- a/libcxx/docs/Status/Cxx20Issues.csv +++ b/libcxx/docs/Status/Cxx20Issues.csv @@ -1,4 +1,4 @@ -"Issue #","Issue Name","Meeting","Status","First released version" +"Issue #","Issue Name","Meeting","Status","First released version","Labels" "`2070 `__","``allocate_shared``\ should use ``allocator_traits::construct``\ ","Toronto","Resolved by `P0674R1 `__","" "`2444 `__","Inconsistent complexity for ``std::sort_heap``\ ","Toronto","","" "`2593 `__","Moved-from state of Allocators","Toronto","","" @@ -137,21 +137,21 @@ "`3119 `__","Program-definedness of closure types","Kona","|Nothing To Do|","" "`3133 `__","Modernizing numeric type requirements","Kona","","" "`3144 `__","``span``\ does not have a ````const_pointer````\ typedef","Kona","|Complete|","" -"`3173 `__","Enable CTAD for *``ref-view``*\ ","Kona","","" -"`3179 `__","``subrange``\ should always model ``Range``\ ","Kona","","" -"`3180 `__","Inconsistently named return type for ``ranges::minmax_element``\ ","Kona","","" +"`3173 `__","Enable CTAD for *``ref-view``*\ ","Kona","","","|ranges|" +"`3179 `__","``subrange``\ should always model ``Range``\ ","Kona","","","|ranges|" +"`3180 `__","Inconsistently named return type for ``ranges::minmax_element``\ ","Kona","","","|ranges|" "`3182 `__","Specification of ``Same``\ could be clearer","Kona","","" "","","","","" "`2899 `__","``is_(nothrow_)move_constructible``\ and ``tuple``\ , ``optional``\ and ``unique_ptr``\ ","Cologne","","" "`3055 `__","``path::operator+=(*single-character*)``\ misspecified","Cologne","|Complete|","7.0" "`3158 `__","``tuple(allocator_arg_t, const Alloc&)``\ should be conditionally explicit","Cologne","|Complete|","10.0" -"`3169 `__","``ranges``\ permutation generators discard useful information","Cologne","","" -"`3183 `__","Normative permission to specialize Ranges variable templates","Cologne","","" +"`3169 `__","``ranges``\ permutation generators discard useful information","Cologne","","","|ranges|" +"`3183 `__","Normative permission to specialize Ranges variable templates","Cologne","","","|ranges|" "`3184 `__","Inconsistencies in ``bind_front``\ wording","Cologne","|Complete|","13.0" "`3185 `__","Uses-allocator construction functions missing ``constexpr``\ and ``noexcept``\ ","Cologne","","" -"`3186 `__","``ranges``\ removal, partition, and ``partial_sort_copy``\ algorithms discard useful information","Cologne","","" +"`3186 `__","``ranges``\ removal, partition, and ``partial_sort_copy``\ algorithms discard useful information","Cologne","","","|ranges|" "`3187 `__","`P0591R4 `__ reverted DR 2586 fixes to ``scoped_allocator_adaptor::construct()``\ ","Cologne","","" -"`3191 `__","``std::ranges::shuffle``\ synopsis does not match algorithm definition","Cologne","","" +"`3191 `__","``std::ranges::shuffle``\ synopsis does not match algorithm definition","Cologne","","","|ranges|" "`3196 `__","``std::optional``\ is ill-formed is ``T``\ is an array","Cologne","|Complete|","" "`3198 `__","Bad constraint on ``std::span::span()``\ ","Cologne","|Complete|","" "`3199 `__","``istream >> bitset<0>``\ fails","Cologne","","" @@ -163,28 +163,28 @@ "`3231 `__","``year_month_day_last::day``\ specification does not cover ``!ok()``\ values","Belfast","|Nothing To Do|","" "`3225 `__","``zoned_time``\ converting constructor shall not be ``noexcept``\ ","Belfast","","" "`3190 `__","``std::allocator::allocate``\ sometimes returns too little storage","Belfast","","" -"`3218 `__","Modifier for ``%d``\ parse flag does not match POSIX and ``format``\ specification","Belfast","","" +"`3218 `__","Modifier for ``%d``\ parse flag does not match POSIX and ``format``\ specification","Belfast","","","|format| |chrono|" "`3224 `__","``zoned_time``\ constructor from ``TimeZonePtr``\ does not specify initialization of ``tp_``\ ","Belfast","","" -"`3230 `__","Format specifier ``%y/%Y``\ is missing locale alternative versions","Belfast","","" +"`3230 `__","Format specifier ``%y/%Y``\ is missing locale alternative versions","Belfast","","","|format| |chrono|" "`3232 `__","Inconsistency in ``zoned_time``\ deduction guides","Belfast","","" "`3222 `__","P0574R1 introduced preconditions on non-existent parameters","Belfast","","" "`3221 `__","Result of ``year_month``\ arithmetic with ``months``\ is ambiguous","Belfast","|Complete|","8.0" "`3235 `__","``parse``\ manipulator without abbreviation is not callable","Belfast","","" -"`3246 `__","What are the constraints on the template parameter of ``basic_format_arg``\ ?","Belfast","","" +"`3246 `__","What are the constraints on the template parameter of ``basic_format_arg``\ ?","Belfast","","","|format|" "`3253 `__","``basic_syncbuf::basic_syncbuf()``\ should not be explicit","Belfast","","" "`3245 `__","Unnecessary restriction on ``'%p'``\ parse specifier","Belfast","","" "`3244 `__","Constraints for ``Source``\ in |sect|\ [fs.path.req] insufficiently constrainty","Belfast","","" -"`3241 `__","``chrono-spec``\ grammar ambiguity in |sect|\ [time.format]","Belfast","","" +"`3241 `__","``chrono-spec``\ grammar ambiguity in |sect|\ [time.format]","Belfast","","","|format| |chrono|" "`3257 `__","Missing feature testing macro update from P0858","Belfast","","" "`3256 `__","Feature testing macro for ``constexpr``\ algorithms","Belfast","|Complete|","13.0" "`3273 `__","Specify ``weekday_indexed``\ to range of ``[0, 7]``\ ","Belfast","","" "`3070 `__","``path::lexically_relative``\ causes surprising results if a filename can also be a *root-name*","Belfast","","" "`3266 `__","``to_chars(bool)``\ should be deleted","Belfast","","" -"`3272 `__","``%I%p``\ should parse/format ``duration``\ since midnight","Belfast","","" +"`3272 `__","``%I%p``\ should parse/format ``duration``\ since midnight","Belfast","","","|format| |chrono|" "`3259 `__","The definition of *constexpr iterators* should be adjusted","Belfast","","" "`3103 `__","Errors in taking subview of ``span``\ should be ill-formed where possible","Belfast","","" "`3274 `__","Missing feature test macro for ````\ ","Belfast","","" -"`3276 `__","Class ``split_view::outer_iterator::value_type``\ should inherit from ``view_interface``\ ","Belfast","","" +"`3276 `__","Class ``split_view::outer_iterator::value_type``\ should inherit from ``view_interface``\ ","Belfast","","","|ranges|" "`3277 `__","Pre-increment on prvalues is not a requirement of ``weakly_incrementable``\ ","Belfast","","" "`3149 `__","``DefaultConstructible``\ should require default initialization","Belfast","|Complete|","13.0" "","","","","" @@ -202,39 +202,39 @@ "`3233 `__","Broken requirements for ``shared_ptr``\ converting constructors","Prague","","" "`3237 `__","LWG 3038 and 3190 have inconsistent PRs","Prague","","" "`3238 `__","Insufficiently-defined behavior of ``std::function``\ deduction guides","Prague","","" -"`3242 `__","``std::format``\ : missing rules for ``arg-id``\ in ``width``\ and ``precision``\ ","Prague","|Complete|","Clang 14" -"`3243 `__","``std::format``\ and negative zeroes","Prague","","" +"`3242 `__","``std::format``\ : missing rules for ``arg-id``\ in ``width``\ and ``precision``\ ","Prague","|Complete|","Clang 14","|format|" +"`3243 `__","``std::format``\ and negative zeroes","Prague","","","|format|" "`3247 `__","``ranges::iter_move``\ should perform ADL-only lookup of ``iter_move``\ ","Prague","","" -"`3248 `__","``std::format``\ ``#b``\ , ``#B``\ , ``#o``\ , ``#x``\ , and ``#X``\ presentation types misformat negative numbers","Prague","|Complete|","14.0" -"`3250 `__","``std::format``\ : ``#``\ (alternate form) for NaN and inf","Prague","","" +"`3248 `__","``std::format``\ ``#b``\ , ``#B``\ , ``#o``\ , ``#x``\ , and ``#X``\ presentation types misformat negative numbers","Prague","|Complete|","14.0","|format|" +"`3250 `__","``std::format``\ : ``#``\ (alternate form) for NaN and inf","Prague","","","|format|" "`3251 `__","Are ``std::format``\ alignment specifiers applied to string arguments?","Prague","","" "`3252 `__","Parse locale's aware modifiers for commands are not consistent with POSIX spec","Prague","","" "`3254 `__","Strike ``stop_token``\ 's ``operator!=``\ ","Prague","","" "`3255 `__","``span``\ 's ``array``\ constructor is too strict","Prague","|Complete|","" "`3260 `__","``year_month*``\ arithmetic rejects durations convertible to years","Prague","","" -"`3262 `__","Formatting of negative durations is not specified","Prague","","" +"`3262 `__","Formatting of negative durations is not specified","Prague","","","|format| |chrono|" "`3264 `__","``sized_range``\ and ``ranges::size``\ redundantly use ``disable_sized_range``\ ","Prague","","" "`3269 `__","Parse manipulators do not specify the result of the extraction from stream","Prague","","" -"`3270 `__","Parsing and formatting ``%j``\ with ``duration``\ s","Prague","","" -"`3280 `__","View converting constructors can cause constraint recursion and are unneeded","Prague","","" -"`3281 `__","Conversion from ``*pair-like*``\ types to ``subrange``\ is a silent semantic promotion","Prague","","" -"`3282 `__","``subrange``\ converting constructor should disallow derived to base conversions","Prague","","" +"`3270 `__","Parsing and formatting ``%j``\ with ``duration``\ s","Prague","","","|format| |chrono|" +"`3280 `__","View converting constructors can cause constraint recursion and are unneeded","Prague","","","|ranges|" +"`3281 `__","Conversion from ``*pair-like*``\ types to ``subrange``\ is a silent semantic promotion","Prague","","","|ranges|" +"`3282 `__","``subrange``\ converting constructor should disallow derived to base conversions","Prague","","","|ranges|" "`3284 `__","``random_access_iterator``\ semantic constraints accidentally promote difference type using unary negate","Prague","","" "`3285 `__","The type of a customization point object shall satisfy ``semiregular``\ ","Prague","","" -"`3286 `__","``ranges::size``\ is not required to be valid after a call to ``ranges::begin``\ on an input range","Prague","","" -"`3291 `__","``iota_view::iterator``\ has the wrong ``iterator_category``\ ","Prague","","" -"`3292 `__","``iota_view``\ is under-constrained","Prague","","" +"`3286 `__","``ranges::size``\ is not required to be valid after a call to ``ranges::begin``\ on an input range","Prague","","","|ranges|" +"`3291 `__","``iota_view::iterator``\ has the wrong ``iterator_category``\ ","Prague","","","|ranges|" +"`3292 `__","``iota_view``\ is under-constrained","Prague","","","|ranges|" "`3294 `__","``zoned_time``\ deduction guides misinterprets ``string``\ /``char*``\ ","Prague","","" "`3296 `__","Inconsistent default argument for ``basic_regex<>::assign``\ ","Prague","|Complete|","" -"`3299 `__","Pointers don't need customized iterator behavior","Prague","","" +"`3299 `__","Pointers don't need customized iterator behavior","Prague","","","|ranges|" "`3300 `__","Non-array ``ssize``\ overload is underconstrained","Prague","","" -"`3301 `__","``transform_view::iterator``\ has incorrect ``iterator_category``\ ","Prague","","" -"`3302 `__","Range adaptor objects ``keys``\ and ``values``\ are unspecified","Prague","","" +"`3301 `__","``transform_view::iterator``\ has incorrect ``iterator_category``\ ","Prague","","","|ranges|" +"`3302 `__","Range adaptor objects ``keys``\ and ``values``\ are unspecified","Prague","","","|ranges|" "`3303 `__","Bad ""``constexpr``\ "" marker for ``destroy/destroy_n``\ ","Prague","","" "`3304 `__","Allocate functions of ``std::polymorphic_allocator``\ should require ``[[nodiscard]]``\ ","Prague","","" "`3307 `__","``std::allocator().allocate(n)``\ ","Prague","","" "`3310 `__","Replace ``SIZE_MAX``\ with ``numeric_limits::max()``\ ","Prague","","" -"`3313 `__","``join_view::iterator::operator--``\ is incorrectly constrained","Prague","","" +"`3313 `__","``join_view::iterator::operator--``\ is incorrectly constrained","Prague","","","|ranges|" "`3314 `__","Is stream insertion behavior locale dependent when ``Period::type``\ is ``micro``\ ?","Prague","","" "`3315 `__","Correct Allocator Default Behavior","Prague","","" "`3316 `__","Correctly define epoch for ``utc_clock``\ / ``utc_timepoint``\ ","Prague","","" @@ -243,20 +243,20 @@ "`3319 `__","Properly reference specification of IANA time zone database","Prague","","" "`3320 `__","``span::cbegin/cend``\ methods produce different results than ``std::[ranges::]cbegin/cend``\ ","Prague","|Complete|","" "`3321 `__","``uninitialized_construct_using_allocator``\ should use ``construct_at``\ ","Prague","","" -"`3323 `__","``*has-tuple-element*``\ helper concept needs ``convertible_to``\ ","Prague","","" +"`3323 `__","``*has-tuple-element*``\ helper concept needs ``convertible_to``\ ","Prague","","","|ranges|" "`3324 `__","Special-case ``std::strong/weak/partial_order``\ for pointers","Prague","","" -"`3325 `__","Constrain return type of transformation function for ``transform_view``\ ","Prague","","" +"`3325 `__","Constrain return type of transformation function for ``transform_view``\ ","Prague","","","|ranges|" "`3326 `__","``enable_view``\ has false positives","Prague","|In progress|","" -"`3327 `__","Format alignment specifiers vs. text direction","Prague","|Nothing To Do|","" +"`3327 `__","Format alignment specifiers vs. text direction","Prague","|Nothing To Do|","","|format|" "`3328 `__","Clarify that ``std::string``\ is not good for UTF-8","Prague","","" "`3329 `__","``totally_ordered_with``\ both directly and indirectly requires ``common_reference_with``\ ","Prague","|Complete|","13.0" "`3330 `__","Include ````\ from most library headers","Prague","","" "`3331 `__","Define ``totally_ordered/_with``\ in terms of ``*partially-ordered-with*``\ ","Prague","|Complete|","13.0" -"`3332 `__","Issue in |sect|\ [time.format]","Prague","","" +"`3332 `__","Issue in |sect|\ [time.format]","Prague","","","|format| |chrono|" "`3334 `__","``basic_osyncstream``\ move assignment and destruction calls ``basic_syncbuf::emit()``\ twice","Prague","","" -"`3335 `__","Resolve C++20 NB comments US 273 and GB 274","Prague","","" +"`3335 `__","Resolve C++20 NB comments US 273 and GB 274","Prague","","","|ranges|" "`3338 `__","Rename ``default_constructible``\ to ``default_initializable``\ ","Prague","|Complete|","13.0" -"`3340 `__","Formatting functions should throw on argument/format string mismatch in |sect|\ [format.functions]","Prague","","" +"`3340 `__","Formatting functions should throw on argument/format string mismatch in |sect|\ [format.functions]","Prague","","","|format|" "`3346 `__","``pair``\ and ``tuple``\ copy and move constructor have backwards specification","Prague","","" "`3347 `__","``std::pair``\ now requires ``T``\ and ``U``\ to be less-than-comparable","Prague","","" "`3348 `__","``__cpp_lib_unwrap_ref``\ in wrong header","Prague","|Complete|","12.0" @@ -265,36 +265,36 @@ "`3351 `__","``ranges::enable_safe_range``\ should not be constrained","Prague","","" "`3352 `__","``strong_equality``\ isn't a thing","Prague","","" "`3354 `__","``has_strong_structural_equality``\ has a meaningless definition","Prague","","" -"`3355 `__","The memory algorithms should support move-only input iterators introduced by P1207","Prague","","" +"`3355 `__","The memory algorithms should support move-only input iterators introduced by P1207","Prague","","","|ranges|" "`3356 `__","``__cpp_lib_nothrow_convertible``\ should be ``__cpp_lib_is_nothrow_convertible``\ ","Prague","|Complete|","12.0" "`3358 `__","|sect|\ [span.cons] is mistaken that ``to_address``\ can throw","Prague","","" "`3359 `__","````\ leap second support should allow for negative leap seconds","Prague","","" "`3360 `__","``three_way_comparable_with``\ is inconsistent with similar concepts","Prague","","" "`3362 `__","Strike ``stop_source``\ 's ``operator!=``\ ","Prague","","" -"`3363 `__","``drop_while_view``\ should opt-out of ``sized_range``\ ","Prague","","" -"`3364 `__","Initialize data members of ranges and their iterators","Prague","","" +"`3363 `__","``drop_while_view``\ should opt-out of ``sized_range``\ ","Prague","","","|ranges|" +"`3364 `__","Initialize data members of ranges and their iterators","Prague","","","|ranges|" "`3367 `__","Integer-class conversions should not throw","Prague","","" "`3369 `__","``span``\ 's deduction-guide for built-in arrays doesn't work","Prague","","" -"`3371 `__","``visit_format_arg``\ and ``make_format_args``\ are not hidden friends","Prague","|Complete|","14.0" -"`3372 `__","``vformat_to``\ should not try to deduce ``Out``\ twice","Prague","","" -"`3373 `__","``{to,from}_chars_result``\ and ``format_to_n_result``\ need the ""we really mean what we say"" wording","Prague","","" +"`3371 `__","``visit_format_arg``\ and ``make_format_args``\ are not hidden friends","Prague","|Complete|","14.0","|format|" +"`3372 `__","``vformat_to``\ should not try to deduce ``Out``\ twice","Prague","","","|format|" +"`3373 `__","``{to,from}_chars_result``\ and ``format_to_n_result``\ need the ""we really mean what we say"" wording","Prague","","","|format|" "`3374 `__","P0653 + P1006 should have made the other ``std::to_address``\ overload ``constexpr``\ ","Prague","|Complete|","12.0" "`3375 `__","``decay``\ in ``viewable_range``\ should be ``remove_cvref``\ ","Prague","","" "`3377 `__","``elements_view::iterator``\ befriends a specialization of itself","Prague","","" "`3379 `__","""``safe``\ "" in several library names is misleading","Prague","|In Progress|","" "`3380 `__","``common_type``\ and comparison categories","Prague","","" -"`3381 `__","``begin``\ and ``data``\ must agree for ``contiguous_range``\ ","Prague","","" +"`3381 `__","``begin``\ and ``data``\ must agree for ``contiguous_range``\ ","Prague","","","|ranges|" "`3382 `__","NTTP for ``pair``\ and ``array``\ ","Prague","","" "`3383 `__","|sect|\ [time.zone.leap.nonmembers] ``sys_seconds``\ should be replaced with ``seconds``\ ","Prague","","" -"`3384 `__","``transform_view::*sentinel*``\ has an incorrect ``operator-``\ ","Prague","","" -"`3385 `__","``common_iterator``\ is not sufficiently constrained for non-copyable iterators","Prague","","" -"`3387 `__","|sect|\ [range.reverse.view] ``reverse_view``\ unintentionally requires ``range``\ ","Prague","","" -"`3388 `__","``view``\ iterator types have ill-formed ``<=>``\ operators","Prague","","" -"`3389 `__","A move-only iterator still does not have a ``counted_iterator``\ ","Prague","","" +"`3384 `__","``transform_view::*sentinel*``\ has an incorrect ``operator-``\ ","Prague","","","|ranges|" +"`3385 `__","``common_iterator``\ is not sufficiently constrained for non-copyable iterators","Prague","","","|ranges|" +"`3387 `__","|sect|\ [range.reverse.view] ``reverse_view``\ unintentionally requires ``range``\ ","Prague","","","|ranges|" +"`3388 `__","``view``\ iterator types have ill-formed ``<=>``\ operators","Prague","","","|ranges|" +"`3389 `__","A move-only iterator still does not have a ``counted_iterator``\ ","Prague","","","|ranges|" "`3390 `__","``make_move_iterator()``\ cannot be used to construct a ``move_iterator``\ for a move-only iterator","Prague","","" "`3393 `__","Missing/incorrect feature test macro for coroutines","Prague","","" "`3395 `__","Definition for three-way comparison needs to be updated (US 152)","Prague","","" "`3396 `__","Clarify point of reference for ``source_location::current()``\ (DE 169)","Prague","","" -"`3397 `__","``ranges::basic_istream_view::iterator``\ should not provide ``iterator_category``\ ","Prague","","" -"`3398 `__","``tuple_element_t``\ is also wrong for ``const subrange``\ ","Prague","","" +"`3397 `__","``ranges::basic_istream_view::iterator``\ should not provide ``iterator_category``\ ","Prague","","","|ranges|" +"`3398 `__","``tuple_element_t``\ is also wrong for ``const subrange``\ ","Prague","","","|ranges|" "`3446 `__","``indirectly_readable_traits``\ ambiguity for types with both ``value_type``\ and ``element_type``\ ","November virtual meeting","|Complete|","13.0" diff --git a/libcxx/docs/Status/Cxx2bIssues.csv b/libcxx/docs/Status/Cxx2bIssues.csv --- a/libcxx/docs/Status/Cxx2bIssues.csv +++ b/libcxx/docs/Status/Cxx2bIssues.csv @@ -1,4 +1,4 @@ -"Issue #","Issue Name","Meeting","Status","First released version" +"Issue #","Issue Name","Meeting","Status","First released version","Labels" "`2839 `__","Self-move-assignment of library types, again","November 2020","","" "`3117 `__","Missing ``packaged_task`` deduction guides","November 2020","","" "`3143 `__","``monotonic_buffer_resource`` growth policy is unclear","November 2020","","" @@ -44,7 +44,7 @@ "`3467 `__","``bool`` can't be an integer-like type","November 2020","","" "`3472 `__","``counted_iterator`` is missing preconditions","November 2020","","" "`3473 `__","Normative encouragement in non-normative note","November 2020","","" -"`3474 `__","Nesting ``join_views`` is broken because of CTAD","November 2020","","" +"`3474 `__","Nesting ``join_views`` is broken because of CTAD","November 2020","","","|ranges|" "`3476 `__","``thread`` and ``jthread`` constructors require that the parameters be move-constructible but never move construct the parameters","November 2020","","" "`3477 `__","Simplify constraints for semiregular-box","November 2020","","" "`3482 `__","``drop_view``'s const begin should additionally require sized_range","November 2020","","" @@ -56,46 +56,46 @@ "`3492 `__","Minimal improvements to ``elements_view::iterator``","February 2021","","" "`3494 `__","Allow ranges to be conditionally borrowed","February 2021","Superseded by `P2017R1 `__","" "`3495 `__","``constexpr launder`` makes pointers to inactive members of unions usable","February 2021","","" -"`3500 `__","``join_view::iterator::operator->()`` is bogus","February 2021","","" +"`3500 `__","``join_view::iterator::operator->()`` is bogus","February 2021","","","|ranges|" "`3502 `__","``elements_view`` should not be allowed to return dangling reference","February 2021","","" -"`3505 `__","``split_view::outer-iterator::operator++`` misspecified","February 2021","","" +"`3505 `__","``split_view::outer-iterator::operator++`` misspecified","February 2021","","","|ranges|" "","","","","" `2774 `__,"``std::function`` construction vs assignment","June 2021","","" `2818 `__,"``::std::`` everywhere rule needs tweaking","June 2021","","" `2997 `__,"LWG 491 and the specification of ``{forward_,}list::unique``","June 2021","","" `3410 `__,"``lexicographical_compare_three_way`` is overspecified","June 2021","","" `3430 `__,"``std::fstream`` & co. should be constructible from string_view","June 2021","","" -`3462 `__,"§[formatter.requirements]: Formatter requirements forbid use of ``fc.arg()``","June 2021","","" -`3481 `__,"``viewable_range`` mishandles lvalue move-only views","June 2021","","" +`3462 `__,"§[formatter.requirements]: Formatter requirements forbid use of ``fc.arg()``","June 2021","","","|format|" +`3481 `__,"``viewable_range`` mishandles lvalue move-only views","June 2021","","","|ranges|" `3506 `__,"Missing allocator-extended constructors for ``priority_queue``","June 2021","|Complete|","14.0" -`3517 `__,"``join_view::iterator``'s ``iter_swap`` is underconstrained","June 2021","","" +`3517 `__,"``join_view::iterator``'s ``iter_swap`` is underconstrained","June 2021","","","|ranges|" `3518 `__,"Exception requirements on char trait operations unclear","June 2021","","" `3519 `__,"Incomplete synopses for classes","June 2021","","" -`3520 `__,"``iter_move`` and ``iter_swap`` are inconsistent for ``transform_view::iterator``","June 2021","","" +`3520 `__,"``iter_move`` and ``iter_swap`` are inconsistent for ``transform_view::iterator``","June 2021","","","|ranges|" `3521 `__,"Overly strict requirements on ``qsort`` and ``bsearch``","June 2021","","" -`3522 `__,"Missing requirement on ``InputIterator`` template parameter for ``priority_queue`` constructors","June 2021","|Complete|","14.0" -`3523 `__,"``iota_view::sentinel`` is not always ``iota_view``'s sentinel","June 2021","","" +`3522 `__,"Missing requirement on ``InputIterator`` template parameter for ``priority_queue`` constructors","June 2021","|Complete|","14.0","|ranges|" +`3523 `__,"``iota_view::sentinel`` is not always ``iota_view``'s sentinel","June 2021","","","|ranges|" `3526 `__,"Return types of ``uses_allocator_construction_args`` unspecified","June 2021","","" `3527 `__,"``uses_allocator_construction_args`` handles rvalue pairs of rvalue references incorrectly","June 2021","","" `3528 `__,"``make_from_tuple`` can perform (the equivalent of) a C-style cast","June 2021","","" `3529 `__,"``priority_queue(first, last)`` should construct ``c`` with ``(first, last)``","June 2021","","" `3530 `__,"``BUILTIN-PTR-MEOW`` should not opt the type out of syntactic checks","June 2021","","" -`3532 `__,"``split_view::inner-iterator::operator++(int)`` should depend on ``Base``","June 2021","","" -`3533 `__,"Make ``base() const &`` consistent across iterator wrappers that supports ``input_iterators``","June 2021","","" +`3532 `__,"``split_view::inner-iterator::operator++(int)`` should depend on ``Base``","June 2021","","","|ranges|" +`3533 `__,"Make ``base() const &`` consistent across iterator wrappers that supports ``input_iterators``","June 2021","","","|ranges|" `3536 `__,"Should ``chrono::from_stream()`` assign zero to duration for failure?","June 2021","","" -`3539 `__,"``format_to`` must not copy models of ``output_iterator``","June 2021","","" -`3540 `__,"§[format.arg] There should be no const in ``basic_format_arg(const T* p)``","June 2021","","" -`3541 `__,"``indirectly_readable_traits`` should be SFINAE-friendly for all types","June 2021","","" -`3542 `__,"``basic_format_arg`` mishandles ``basic_string_view`` with custom traits","June 2021","","" -`3543 `__,"Definition of when ``counted_iterators`` refer to the same sequence isn't quite right","June 2021","","" -`3544 `__,"``format-arg-store::args`` is unintentionally not exposition-only","June 2021","","" -`3546 `__,"``common_iterator``'s postfix-proxy is not quite right","June 2021","","" +`3539 `__,"``format_to`` must not copy models of ``output_iterator``","June 2021","","","|format|" +`3540 `__,"§[format.arg] There should be no const in ``basic_format_arg(const T* p)``","June 2021","","","|format|" +`3541 `__,"``indirectly_readable_traits`` should be SFINAE-friendly for all types","June 2021","","","|ranges|" +`3542 `__,"``basic_format_arg`` mishandles ``basic_string_view`` with custom traits","June 2021","","","|format|" +`3543 `__,"Definition of when ``counted_iterators`` refer to the same sequence isn't quite right","June 2021","","","|ranges|" +`3544 `__,"``format-arg-store::args`` is unintentionally not exposition-only","June 2021","","","|format|" +`3546 `__,"``common_iterator``'s postfix-proxy is not quite right","June 2021","","","|ranges|" `3548 `__,"``shared_ptr`` construction from ``unique_ptr`` should move (not copy) the deleter","June 2021","","" -`3549 `__,"``view_interface`` is overspecified to derive from ``view_base``","June 2021","","" -`3551 `__,"``borrowed_{iterator,subrange}_t`` are overspecified","June 2021","","" +`3549 `__,"``view_interface`` is overspecified to derive from ``view_base``","June 2021","","","|ranges|" +`3551 `__,"``borrowed_{iterator,subrange}_t`` are overspecified","June 2021","","","|ranges|" `3552 `__,"Parallel specialized memory algorithms should require forward iterators","June 2021","","" -`3553 `__,"Useless constraint in ``split_view::outer-iterator::value_type::begin()``","June 2021","","" -`3555 `__,"``{transform,elements}_view::iterator::iterator_concept`` should consider const-qualification of the underlying range","June 2021","","" +`3553 `__,"Useless constraint in ``split_view::outer-iterator::value_type::begin()``","June 2021","","","|ranges|" +`3555 `__,"``{transform,elements}_view::iterator::iterator_concept`` should consider const-qualification of the underlying range","June 2021","","","|ranges|" "","","","","" `2191 `__,"Incorrect specification of ``match_results(match_results&&)``","October 2021","","" `2381 `__,"Inconsistency in parsing floating point numbers","October 2021","","" @@ -105,35 +105,35 @@ `3146 `__,"Excessive unwrapping in ``std::ref/cref``","October 2021","","" `3152 `__,"``common_type`` and ``common_reference`` have flaws in common","October 2021","","" `3293 `__,"``move_iterator operator+()`` has incorrect constraints","October 2021","","" -`3361 `__,"``safe_range`` case","October 2021","","" -`3392 `__,"``ranges::distance()`` cannot be used on a move-only iterator with a sized sentinel","October 2021","","" -`3407 `__,"Some problems with the wording changes of P1739R4","October 2021","","" +`3361 `__,"``safe_range`` case","October 2021","","","|ranges|" +`3392 `__,"``ranges::distance()`` cannot be used on a move-only iterator with a sized sentinel","October 2021","","","|ranges|" +`3407 `__,"Some problems with the wording changes of P1739R4","October 2021","","","|ranges|" `3422 `__,"Issues of ``seed_seq``'s constructors","October 2021","","" -`3470 `__,"``convertible-to-non-slicing`` seems to reject valid case","October 2021","","" -`3480 `__,"``directory_iterator`` and ``recursive_directory_iterator`` are not C++20 ranges","October 2021","","" +`3470 `__,"``convertible-to-non-slicing`` seems to reject valid case","October 2021","","","|ranges|" +`3480 `__,"``directory_iterator`` and ``recursive_directory_iterator`` are not C++20 ranges","October 2021","","","|ranges|" `3498 `__,"Inconsistent ``noexcept``-specifiers for ``basic_syncbuf``","October 2021","","" -`3535 `__,"``join_view::iterator::iterator_category`` and ``::iterator_concept`` lie","October 2021","","" +`3535 `__,"``join_view::iterator::iterator_category`` and ``::iterator_concept`` lie","October 2021","","","|ranges|" `3554 `__,"``chrono::parse`` needs ``const charT*`` and ``basic_string_view`` overloads","October 2021","","" `3557 `__,"The ``static_cast`` expression in ``convertible_to`` has the wrong operand","October 2021","","" -`3559 `__,"Semantic requirements of ``sized_range`` is circular","October 2021","","" -`3560 `__,"``ranges::equal`` and ``ranges::is_permutation`` should short-circuit for ``sized_ranges``","October 2021","","" +`3559 `__,"Semantic requirements of ``sized_range`` is circular","October 2021","","","|ranges|" +`3560 `__,"``ranges::equal`` and ``ranges::is_permutation`` should short-circuit for ``sized_ranges``","October 2021","","","|ranges|" `3561 `__,"Issue with internal counter in ``discard_block_engine``","October 2021","","" -`3563 `__,"``keys_view`` example is broken","October 2021","","" +`3563 `__,"``keys_view`` example is broken","October 2021","","","|ranges|" `3566 `__,"Constraint recursion for ``operator<=>(optional, U)``","October 2021","","" -`3567 `__,"Formatting move-only iterators take two","October 2021","","" -`3568 `__,"``basic_istream_view`` needs to initialize ``value_``","October 2021","","" +`3567 `__,"Formatting move-only iterators take two","October 2021","","","|format|" +`3568 `__,"``basic_istream_view`` needs to initialize ``value_``","October 2021","","","|ranges|" `3570 `__,"``basic_osyncstream::emit`` should be an unformatted output function","October 2021","","" `3571 `__,"``flush_emit`` should set ``badbit`` if the ``emit`` call fails","October 2021","","" -`3572 `__,"``copyable-box`` should be fully ``constexpr``","October 2021","","" +`3572 `__,"``copyable-box`` should be fully ``constexpr``","October 2021","","","|ranges|" `3573 `__,"Missing Throws element for ``basic_string_view(It begin, End end)``","October 2021","","" `3574 `__,"``common_iterator`` should be completely ``constexpr``-able","October 2021","","" -`3580 `__,"``iota_view``'s ``iterator``'s binary ``operator+`` should be improved","October 2021","","" -`3581 `__,"The range constructor makes ``basic_string_view`` not trivially move constructible","October 2021","","" +`3580 `__,"``iota_view``'s ``iterator``'s binary ``operator+`` should be improved","October 2021","","","|ranges|" +`3581 `__,"The range constructor makes ``basic_string_view`` not trivially move constructible","October 2021","","","|ranges|" `3585 `__,"``variant`` converting assignment with immovable alternative","October 2021","","" -`3589 `__,"The ``const`` lvalue reference overload of ``get`` for ``subrange`` does not constrain ``I`` to be ``copyable`` when ``N == 0``","October 2021","","" -`3590 `__,"``split_view::base() const &`` is overconstrained","October 2021","","" -`3591 `__,"``lazy_split_view::inner-iterator::base() &&`` invalidates outer iterators","October 2021","","" -`3592 `__,"``lazy_split_view`` needs to check the simpleness of Pattern","October 2021","","" -`3593 `__,"Several iterators' ``base() const &`` and ``lazy_split_view::outer-iterator::value_type::end()`` missing ``noexcept``","October 2021","","" +`3589 `__,"The ``const`` lvalue reference overload of ``get`` for ``subrange`` does not constrain ``I`` to be ``copyable`` when ``N == 0``","October 2021","","","|ranges|" +`3590 `__,"``split_view::base() const &`` is overconstrained","October 2021","","","|ranges|" +`3591 `__,"``lazy_split_view::inner-iterator::base() &&`` invalidates outer iterators","October 2021","","","|ranges|" +`3592 `__,"``lazy_split_view`` needs to check the simpleness of Pattern","October 2021","","","|ranges|" +`3593 `__,"Several iterators' ``base() const &`` and ``lazy_split_view::outer-iterator::value_type::end()`` missing ``noexcept``","October 2021","","","|ranges|" `3595 `__,"Exposition-only classes proxy and postfix-proxy for ``common_iterator`` should be fully ``constexpr``","October 2021","","" "","","","","" diff --git a/libcxx/docs/Status/FormatIssues.csv b/libcxx/docs/Status/FormatIssues.csv --- a/libcxx/docs/Status/FormatIssues.csv +++ b/libcxx/docs/Status/FormatIssues.csv @@ -5,30 +5,6 @@ `P1868 `_,"width: clarifying units of width and precision in std::format (Implements the unicode support.)",Mark de Wever,"`D103413 `__ `D103425 `__ `D103670 `__",|Complete|,Clang 14 `P2216 `_,"std::format improvements",Mark de Wever,,|In Progress|, `P2418 `__,"Add support for ``std::generator``-like types to ``std::format``",Mark de Wever,,|In Progress|, -`LWG-3242 `_,"std::format: missing rules for arg-id in width and precision",Mark de Wever,`D103368 `__,|Complete|,Clang 14 -`LWG-3243 `_,"std::format and negative zeroes",,,|Not Started|, -`LWG-3246 `_,"What are the constraints on the template parameter of basic_format_arg?",,,|Not Started|, -`LWG-3248 `_,"std::format #b, #B, #o, #x, and #X presentation types misformat negative numbers",Mark de Wever,`D103433 `__,|Review|, -`LWG-3250 `_,"std::format: # (alternate form) for NaN and inf",,,|Not Started|, -`LWG-3327 `_,"Format alignment specifiers vs. text direction",,,|Nothing To Do|, -`LWG-3340 `_,"Formatting functions should throw on argument/format string mismatch in [format.functions]",,,|Not Started|, -`LWG-3371 `_,"visit_format_arg and make_format_args are not hidden friends",Mark de Wever,`D103357 `__,|Complete|,Clang 14 -`LWG-3372 `_,"vformat_to should not try to deduce Out twice",,,|Not Started|, -`LWG-3373 `_,"{to,from}_chars_result and format_to_n_result need the 'we really mean what we say'",,,|Not Started|, -`LWG-3462 `_,"§[formatter.requirements]: Formatter requirements forbid use of fc.arg()",,,|Not Started|, -`LWG-3539 `_,"format_to must not copy models of output_iterator",,,|Not Started|, -`LWG-3540 `_,"§[format.arg] There should be no const in basic_format_arg(const T* p)",,,|Not Started|, -`LWG-3541 `_,"indirectly_readable_traits should be SFINAE-friendly for all types",,,|Not Started|, -`LWG-3542 `_,"basic_format_arg mishandles basic_string_view with custom traits",,,|Not Started|, -`LWG-3544 `_,"format-arg-store::args is unintentionally not exposition-only",,,|Not Started|, -`LWG-3567 `_,"Formatting move-only iterators take two",,,|Not Started|, `P1361 `_,"Integration of chrono with text formatting",,,|Not Started|, `P2372 `__,"Fixing locale handling in chrono formatters",,,|Not Started|, -`LWG-3218 `_,"Modifier for %d parse flag does not match POSIX and format specification",,,|Not Started|, -`LWG-3230 `_,"Format specifier %y/%Y is missing locale alternative versions",,,|Not Started|, -`LWG-3241 `_,"chrono-spec grammar ambiguity in [time.format]",,,|Not Started|, -`LWG-3262 `_,"Formatting of negative durations is not specified",,,|Not Started|, -`LWG-3270 `_,"Parsing and formatting %j with durations",,,|Not Started|, -`LWG-3272 `_,"%I%p should parse/format duration since midnight",,,|Not Started|, -`LWG-3332 `_,"Issue in [time.format]",,,|Not Started|, diff --git a/libcxx/docs/Status/RangesIssues.csv b/libcxx/docs/Status/RangesIssues.csv --- a/libcxx/docs/Status/RangesIssues.csv +++ b/libcxx/docs/Status/RangesIssues.csv @@ -31,71 +31,3 @@ `P2415 `__,"What is a ``view``",, `P2432 `__,"Fix ``istream_view``",, - -`LWG3169 `__, ranges permutation generators discard useful information,, -`LWG3173 `__, Enable CTAD for ref-view,, -`LWG3179 `__, subrange should always model Range,, -`LWG3180 `__, Inconsistently named return type for ranges::minmax_element,, -`LWG3183 `__, Normative permission to specialize Ranges variable templates,, -`LWG3186 `__, "ranges removal, partition, and partial_sort_copy algorithms discard useful information",, -`LWG3191 `__, std::ranges::shuffle synopsis does not match algorithm definition,, -`LWG3276 `__, Class split_view::outer_iterator::value_type should inherit from view_interface,, -`LWG3280 `__, View converting constructors can cause constraint recursion and are unneeded,, -`LWG3281 `__, Conversion from pair-like types to subrange is a silent semantic promotion,, -`LWG3282 `__, subrange converting constructor should disallow derived to base conversions,, -`LWG3286 `__, ranges::size is not required to be valid after a call to ranges::begin on an input range,, -`LWG3291 `__, iota_view::iterator has the wrong iterator_category,, -`LWG3292 `__, iota_view is under-constrained,, -`LWG3299 `__, Pointers don't need customized iterator behavior,, -`LWG3301 `__, transform_view::iterator has incorrect iterator_category,, -`LWG3302 `__, Range adaptor objects keys and values are unspecified,, -`LWG3313 `__, join_view::iterator::operator-- is incorrectly constrained,, -`LWG3323 `__, has-tuple-element helper concept needs convertible_to,, -`LWG3325 `__, Constrain return type of transformation function for transform_view,, -`LWG3335 `__, range_size_t and views::all_t,, -`LWG3355 `__, The memory algorithms should support move-only input iterators introduced by P1207,, -`LWG3363 `__, drop_while_view should opt-out of sized_range,, -`LWG3364 `__, Initialize data members of ranges and their iterators,, -`LWG3381 `__, begin and data must agree for contiguous_range,, -`LWG3384 `__, transform_view::sentinel has an incorrect operator-,, -`LWG3385 `__, common_iterator is not sufficiently constrained for non-copyable iterators,, -`LWG3387 `__, [range.reverse.view] reverse_view unintentionally requires range,, -`LWG3388 `__, view iterator types have ill-formed <=> operators,, -`LWG3389 `__, A move-only iterator still does not have a counted_iterator,, -`LWG3397 `__, ranges::basic_istream_view::iterator should not provide iterator_category,, -`LWG3398 `__, tuple_element_t is also wrong for const subrange,, -`LWG3474 `__, Nesting join_views is broken because of CTAD,, -`LWG3481 `__,"viewable_range mishandles lvalue move-only views",, -`LWG3500 `__, join_view::iterator::operator->() is bogus,, -`LWG3505 `__, split_view::outer-iterator::operator++ misspecified,, -`LWG3517 `__,"join_view::iterator's iter_swap is underconstrained",, -`LWG3520 `__,"iter_move and iter_swap are inconsistent for transform_view::iterator",, -`LWG3522 `__,"Missing requirement on InputIterator template parameter for priority_queue constructors","|Complete|","14.0" -`LWG3523 `__,"iota_view::sentinel is not always iota_view's sentinel",, -`LWG3532 `__,"split_view::inner-iterator::operator++(int) should depend on Base",, -`LWG3533 `__,"Make base() const & consistent across iterator wrappers that supports input_iterators",, -`LWG3541 `__,"indirectly_readable_traits should be SFINAE-friendly for all types",, -`LWG3543 `__,"Definition of when counted_iterators refer to the same sequence isn't quite right",, -`LWG3546 `__,"common_iterator's postfix-proxy is not quite right",, -`LWG3549 `__,"view_interface is overspecified to derive from view_base",, -`LWG3551 `__,"borrowed_{iterator,subrange}_t are overspecified",, -`LWG3553 `__,"Useless constraint in split_view::outer-iterator::value_type::begin()",, -`LWG3555 `__,"{transform,elements}_view::iterator::iterator_concept should consider const-qualification of the underlying range",, -`LWG3361 `__,"``safe_range`` case",, -`LWG3392 `__,"``ranges::distance()`` cannot be used on a move-only iterator with a sized sentinel",, -`LWG3407 `__,"Some problems with the wording changes of P1739R4",, -`LWG3470 `__,"``convertible-to-non-slicing`` seems to reject valid case",, -`LWG3480 `__,"``directory_iterator`` and ``recursive_directory_iterator`` are not C++20 ranges",, -`LWG3535 `__,"``join_view::iterator::iterator_category`` and ``::iterator_concept`` lie",, -`LWG3559 `__,"Semantic requirements of ``sized_range`` is circular",, -`LWG3560 `__,"``ranges::equal`` and ``ranges::is_permutation`` should short-circuit for ``sized_ranges``",, -`LWG3563 `__,"``keys_view`` example is broken",, -`LWG3568 `__,"``basic_istream_view`` needs to initialize ``value_``",, -`LWG3572 `__,"``copyable-box`` should be fully ``constexpr``",, -`LWG3580 `__,"``iota_view``'s ``iterator``'s binary ``operator+`` should be improved",, -`LWG3581 `__,"The range constructor makes ``basic_string_view`` not trivially move constructible",, -`LWG3589 `__,"The ``const`` lvalue reference overload of ``get`` for ``subrange`` does not constrain ``I`` to be ``copyable`` when ``N == 0``",, -`LWG3590 `__,"``split_view::base() const &`` is overconstrained",, -`LWG3591 `__,"``lazy_split_view::inner-iterator::base() &&`` invalidates outer iterators",, -`LWG3592 `__,"``lazy_split_view`` needs to check the simpleness of Pattern",, -`LWG3593 `__,"Several iterators' ``base() const &`` and ``lazy_split_view::outer-iterator::value_type::end()`` missing ``noexcept``",,