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 @@ -182,7 +182,7 @@ "`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","|Complete|","14.0" "`3272 `__","``%I%p``\ should parse/format ``duration``\ since midnight","Belfast","","","|chrono| |format|" -"`3259 `__","The definition of *constexpr iterators* should be adjusted","Belfast","|Nothing To Do|","","|ranges|" +"`3259 `__","The definition of *constexpr iterators* should be adjusted","Belfast","|Nothing To Do|","" "`3103 `__","Errors in taking subview of ``span``\ should be ill-formed where possible","Belfast","","" "`3274 `__","Missing feature test macro for ````\ ","Belfast","|Complete|","11.0" "`3276 `__","Class ``split_view::outer_iterator::value_type``\ should inherit from ``view_interface``\ ","Belfast","|Complete|","15.0","|ranges|" @@ -194,7 +194,7 @@ "`3018 `__","``shared_ptr``\ of function type","Prague","","" "`3050 `__","Conversion specification problem in ``chrono::duration``\ constructor","Prague","","","|chrono|" "`3141 `__","``CopyConstructible``\ doesn't preserve source values","Prague","|Nothing to do|","" -"`3150 `__","``UniformRandomBitGenerator``\ should validate ``min``\ and ``max``\ ","Prague","|Complete|","13.0" +"`3150 `__","``UniformRandomBitGenerator``\ should validate ``min``\ and ``max``\ ","Prague","|Complete|","13.0","|ranges|" "`3175 `__","The ``CommonReference``\ requirement of concept ``SwappableWith``\ is not satisfied in the example","Prague","|Complete|","13.0" "`3194 `__","``ConvertibleTo``\ prose does not match code","Prague","|Complete|","13.0" "`3200 `__","``midpoint``\ should not constrain ``T``\ is complete","Prague","|Nothing To Do|","" @@ -298,4 +298,4 @@ "`3396 `__","Clarify point of reference for ``source_location::current()``\ (DE 169)","Prague","","" "`3397 `__","``ranges::basic_istream_view::iterator``\ should not provide ``iterator_category``\ ","Prague","|Complete|","16.0","|ranges|" "`3398 `__","``tuple_element_t``\ is also wrong for ``const subrange``\ ","Prague","|Complete|","14.0","|ranges|" -"`3446 `__","``indirectly_readable_traits``\ ambiguity for types with both ``value_type``\ and ``element_type``\ ","November virtual meeting","|Complete|","13.0" +"`3446 `__","``indirectly_readable_traits``\ ambiguity for types with both ``value_type``\ and ``element_type``\ ","November virtual meeting","|Complete|","13.0","|ranges|" diff --git a/libcxx/docs/Status/Cxx20Papers.csv b/libcxx/docs/Status/Cxx20Papers.csv --- a/libcxx/docs/Status/Cxx20Papers.csv +++ b/libcxx/docs/Status/Cxx20Papers.csv @@ -61,7 +61,7 @@ "`P0608R3 `__","LWG","A sane variant converting constructor","San Diego","|Complete|","9.0" "`P0655R1 `__","LWG","visit: Explicit Return Type for visit","San Diego","|Complete|","12.0" "`P0771R1 `__","LWG","std::function move constructor should be noexcept","San Diego","|Complete|","6.0" -"`P0896R4 `__","LWG","The One Ranges Proposal","San Diego","|Complete|","15.0" +"`P0896R4 `__","LWG","The One Ranges Proposal","San Diego","|Complete|","15.0","|ranges|" "`P0899R1 `__","LWG","P0899R1 - LWG 3016 is not a defect","San Diego","|Nothing To Do|","" "`P0919R3 `__","LWG","Heterogeneous lookup for unordered containers","San Diego","|Complete|","12.0" "`P0972R0 `__","LWG"," ``zero()``\ , ``min()``\ , and ``max()``\ should be noexcept","San Diego","|Complete|","8.0" @@ -89,7 +89,7 @@ "`P1024R3 `__","LWG","Usability Enhancements for std::span","Kona","|Complete|","9.0" "`P1164R1 `__","LWG","Make create_directory() Intuitive","Kona","|Complete|","12.0" "`P1227R2 `__","LWG","Signed ssize() functions, unsigned size() functions","Kona","|Complete|","9.0" -"`P1252R2 `__","LWG","Ranges Design Cleanup","Kona","|Complete|","15.0" +"`P1252R2 `__","LWG","Ranges Design Cleanup","Kona","|Complete|","15.0","|ranges|" "`P1286R2 `__","CWG","Contra CWG DR1778","Kona","","" "`P1357R1 `__","LWG","Traits for [Un]bounded Arrays","Kona","|Complete|","9.0" "`P1458R1 `__","LWG","Mandating the Standard Library: Clause 16 - Language support library","Kona","|Complete|","9.0" @@ -108,40 +108,40 @@ "`P0784R7 `__","CWG","More constexpr containers","Cologne","|Complete|","12.0" "`P0980R1 `__","LWG","Making std::string constexpr","Cologne","|Complete|","15.0" "`P1004R2 `__","LWG","Making std::vector constexpr","Cologne","|Complete|","15.0" -"`P1035R7 `__","LWG","Input Range Adaptors, Todo: elements_view","Cologne","|In Progress|","" +"`P1035R7 `__","LWG","Input Range Adaptors (mostly implemented, TODO: elements_view)","Cologne","|In Progress|","","|ranges|" "`P1065R2 `__","LWG","Constexpr INVOKE","Cologne","|Complete|","12.0" "`P1135R6 `__","LWG","The C++20 Synchronization Library","Cologne","|Complete|","11.0" -"`P1207R4 `__","LWG","Movability of Single-pass Iterators","Cologne","|Complete|","15.0" +"`P1207R4 `__","LWG","Movability of Single-pass Iterators","Cologne","|Complete|","15.0","|ranges|" "`P1208R6 `__","LWG","Adopt source_location for C++20","Cologne","","" "`P1355R2 `__","LWG","Exposing a narrow contract for ceil2","Cologne","|Complete|","9.0" "`P1361R2 `__","LWG","Integration of chrono with text formatting","Cologne","|In Progress|","" "`P1423R3 `__","LWG","char8_t backward compatibility remediation","Cologne","|Complete|","15.0" "`P1424R1 `__","LWG","'constexpr' feature macro concerns","Cologne","Superseded by `P1902 `__","" "`P1466R3 `__","LWG","Miscellaneous minor fixes for chrono","Cologne","","" -"`P1474R1 `__","LWG","Helpful pointers for ContiguousIterator","Cologne","|Complete|","15.0" +"`P1474R1 `__","LWG","Helpful pointers for ContiguousIterator","Cologne","|Complete|","15.0","|ranges|" "`P1502R1 `__","LWG","Standard library header units for C++20","Cologne","","" -"`P1522R1 `__","LWG","Iterator Difference Type and Integer Overflow","Cologne","|Complete|","15.0" -"`P1523R1 `__","LWG","Views and Size Types","Cologne","|Complete|","15.0" +"`P1522R1 `__","LWG","Iterator Difference Type and Integer Overflow","Cologne","|Complete|","15.0","|ranges|" +"`P1523R1 `__","LWG","Views and Size Types","Cologne","|Complete|","15.0","|ranges|" "`P1612R1 `__","LWG","Relocate Endian's Specification","Cologne","|Complete|","10.0" "`P1614R2 `__","LWG","The Mothership has Landed","Cologne","|In Progress|","" -"`P1638R1 `__","LWG","basic_istream_view::iterator should not be copyable","Cologne","|Complete|","16.0" +"`P1638R1 `__","LWG","basic_istream_view::iterator should not be copyable","Cologne","|Complete|","16.0","|ranges|" "`P1643R1 `__","LWG","Add wait/notify to atomic_ref","Cologne","","" "`P1644R0 `__","LWG","Add wait/notify to atomic","Cologne","","" "`P1650R0 `__","LWG","Output std::chrono::days with 'd' suffix","Cologne","","|Complete|","16.0" "`P1651R0 `__","LWG","bind_front should not unwrap reference_wrapper","Cologne","|Complete|","13.0" "`P1652R1 `__","LWG","Printf corner cases in std::format","Cologne","|Complete|","14.0" "`P1661R1 `__","LWG","Remove dedicated precalculated hash lookup interface","Cologne","|Nothing To Do|","" -"`P1754R1 `__","LWG","Rename concepts to standard_case for C++20, while we still can","Cologne","|In Progress|","" +"`P1754R1 `__","LWG","Rename concepts to standard_case for C++20, while we still can","Cologne","|In Progress|","","|ranges|" "","","","","","" "`P0883R2 `__","LWG","Fixing Atomic Initialization","Belfast","|Complete| [#note-P0883.1]_ [#note-P0883.2]_","14.0" -"`P1391R4 `__","LWG","Range constructor for std::string_view","Belfast","|Complete|","14.0" -"`P1394R4 `__","LWG","Range constructor for std::span","Belfast","|Complete|","14.0" -"`P1456R1 `__","LWG","Move-only views","Belfast","|Complete|","15.0" +"`P1391R4 `__","LWG","Range constructor for std::string_view","Belfast","|Complete|","14.0","|ranges|" +"`P1394R4 `__","LWG","Range constructor for std::span","Belfast","|Complete|","14.0","|ranges|" +"`P1456R1 `__","LWG","Move-only views","Belfast","|Complete|","15.0","|ranges|" "`P1622R3 `__","LWG","Mandating the Standard Library: Clause 32 - Thread support library","Belfast","* *","" "`P1645R1 `__","LWG","constexpr for numeric algorithms","Belfast","|Complete|","12.0" "`P1686R2 `__","LWG","Mandating the Standard Library: Clause 27 - Time library","Belfast","* *","" "`P1690R1 `__","LWG","Refinement Proposal for P0919 Heterogeneous lookup for unordered containers","Belfast","|Complete|","12.0" -"`P1716R3 `__","LWG","ranges compare algorithm are over-constrained","Belfast","|Complete|","15.0" +"`P1716R3 `__","LWG","ranges compare algorithm are over-constrained","Belfast","|Complete|","15.0","|ranges|" "`P1718R2 `__","LWG","Mandating the Standard Library: Clause 25 - Algorithms library","Belfast","* *","" "`P1719R2 `__","LWG","Mandating the Standard Library: Clause 26 - Numerics library","Belfast","* *","" "`P1720R2 `__","LWG","Mandating the Standard Library: Clause 28 - Localization library","Belfast","* *","" @@ -149,13 +149,13 @@ "`P1722R2 `__","LWG","Mandating the Standard Library: Clause 30 - Regular Expression library","Belfast","* *","" "`P1723R2 `__","LWG","Mandating the Standard Library: Clause 31 - Atomics library","Belfast","* *","" "`P1855R0 `__","LWG","Make ````\ freestanding","Belfast","* *","" -"`P1862R1 `__","LWG","Ranges adaptors for non-copyable iterators","Belfast","* *","" +"`P1862R1 `__","LWG","Ranges adaptors for non-copyable iterators","Belfast","* *","","|ranges|" "`P1865R1 `__","LWG","Add max() to latch and barrier","Belfast","|Complete|","11.0" "`P1869R1 `__","LWG","Rename 'condition_variable_any' interruptible wait methods","Belfast","* *","" -"`P1870R1 `__","LWG","forwarding-range is too subtle","Belfast","|Complete|","15.0" -"`P1871R1 `__","LWG","Concept traits should be named after concepts","Belfast","|Complete|","14.0" +"`P1870R1 `__","LWG","forwarding-range is too subtle","Belfast","|Complete|","15.0","|ranges|" +"`P1871R1 `__","LWG","Concept traits should be named after concepts","Belfast","|Complete|","14.0","|ranges|" "`P1872R0 `__","LWG","span should have size_type, not index_type","Belfast","|Complete|","10.0" -"`P1878R1 `__","LWG","Constraining Readable Types","Belfast","|Complete|","15.0" +"`P1878R1 `__","LWG","Constraining Readable Types","Belfast","|Complete|","15.0","|ranges|" "`P1892R1 `__","LWG","Extended locale-specific presentation specifiers for std::format","Belfast","|Complete|","14.0" "`P1902R1 `__","LWG","Missing feature-test macros 2018-2019","Belfast","* *","" "`P1959R0 `__","LWG","Remove std::weak_equality and std::strong_equality","Belfast","|Nothing To Do|","" @@ -166,42 +166,42 @@ "`P0586R2 `__","LWG","Safe integral comparisons","Prague","|Complete|","13.0" "`P0593R6 `__","CWG","Implicit creation of objects for low-level object manipulation","Prague","* *","" "`P1115R3 `__","LWG","Improving the Return Value of Erase-Like Algorithms II: Free erase/erase if","Prague","|Complete|","11.0" -"`P1243R4 `__","LWG","Rangify New Algorithms","Prague","|Complete|","15.0" +"`P1243R4 `__","LWG","Rangify New Algorithms","Prague","|Complete|","15.0","|ranges|" "`P1460R1 `__","LWG","Mandating the Standard Library: Clause 20 - Utilities library","Prague","* *","" -"`P1739R4 `__","LWG","Avoid template bloat for safe_ranges in combination with ""subrange-y"" view adaptors","Prague","|Complete|","15.0" +"`P1739R4 `__","LWG","Avoid template bloat for safe_ranges in combination with ""subrange-y"" view adaptors","Prague","|Complete|","15.0","|ranges|" "`P1831R1 `__","LWG","Deprecating volatile: library","Prague","* *","" "`P1868R2 `__","LWG","width: clarifying units of width and precision in std::format","Prague","|Complete|","14.0" "`P1908R1 `__","CWG","Reserving Attribute Namespaces for Future Use","Prague","* *","" "`P1937R2 `__","CWG","Fixing inconsistencies between constexpr and consteval functions","Prague","* *","" "`P1956R1 `__","LWG","On the names of low-level bit manipulation functions","Prague","|Complete|","12.0" "`P1957R2 `__","CWG","Converting from ``T*``\ to bool should be considered narrowing (re: US 212)","Prague","* *","" -"`P1963R0 `__","LWG","Fixing US 313","Prague","* *","" +"`P1963R0 `__","LWG","Fixing US 313","Prague","* *","","|ranges|" "`P1964R2 `__","LWG","Wording for boolean-testable","Prague","|Complete|","13.0" -"`P1970R2 `__","LWG","Consistency for size() functions: Add ranges::ssize","Prague","|Complete|","15.0" +"`P1970R2 `__","LWG","Consistency for size() functions: Add ranges::ssize","Prague","|Complete|","15.0","|ranges|" "`P1973R1 `__","LWG","Rename ""_default_init"" Functions, Rev1","Prague","* *","" -"`P1976R2 `__","LWG","Fixed-size span construction from dynamic range","Prague","|Complete|","11.0" +"`P1976R2 `__","LWG","Fixed-size span construction from dynamic range","Prague","|Complete|","11.0","|ranges|" "`P1981R0 `__","LWG","Rename leap to leap_second","Prague","* *","" "`P1982R0 `__","LWG","Rename link to time_zone_link","Prague","* *","" -"`P1983R0 `__","LWG","Wording for GB301, US296, US292, US291, and US283","Prague","|Complete|","15.0" -"`P1994R1 `__","LWG","elements_view needs its own sentinel","Prague","* *","" +"`P1983R0 `__","LWG","Wording for GB301, US296, US292, US291, and US283","Prague","|Complete|","15.0","|ranges|" +"`P1994R1 `__","LWG","elements_view needs its own sentinel","Prague","* *","","|ranges|" "`P2002R1 `__","CWG","Defaulted comparison specification cleanups","Prague","* *","" "`P2045R1 `__","LWG","Missing Mandates for the standard library","Prague","* *","" "`P2085R0 `__","CWG","Consistent defaulted comparisons","Prague","* *","" -"`P2091R0 `__","LWG","Issues with range access CPOs","Prague","|Complete|","15.0" +"`P2091R0 `__","LWG","Issues with range access CPOs","Prague","|Complete|","15.0","|ranges|" "`P2101R0 `__","LWG","'Models' subsumes 'satisfies' (Wording for US298 and US300)","Prague","* *","" "`P2102R0 `__","LWG","Make 'implicit expression variations' more explicit (Wording for US185)","Prague","* *","" -"`P2106R0 `__","LWG","Alternative wording for GB315 and GB316","Prague","|Complete|","15.0" +"`P2106R0 `__","LWG","Alternative wording for GB315 and GB316","Prague","|Complete|","15.0","|ranges|" "`P2116R0 `__","LWG","Remove tuple-like protocol support from fixed-extent span","Prague","|Complete|","11.0" "","","","","","" "`P2231R1 `__","LWG","Missing constexpr in std::optional and std::variant","June 2021","|Partial| [#note-P2231]_","13.0" -"`P2325R3 `__","LWG","Views should not be required to be default constructible","June 2021","|In progress|","" -"`P2210R2 `__","LWG",Superior String Splitting,"June 2021","","" +"`P2325R3 `__","LWG","Views should not be required to be default constructible","June 2021","|In progress|","","|ranges|" +"`P2210R2 `__","LWG",Superior String Splitting,"June 2021","|In progress|","","|ranges|" "`P2216R3 `__","LWG",std::format improvements,"June 2021","|Complete|","15.0" -"`P2281R1 `__","LWG",Clarifying range adaptor objects,"June 2021","|Complete|","14.0" -"`P2328R1 `__","LWG",join_view should join all views of ranges,"June 2021","","" -"`P2367R0 `__","LWG",Remove misuses of list-initialization from Clause 24,"June 2021","","" +"`P2281R1 `__","LWG",Clarifying range adaptor objects,"June 2021","|Complete|","14.0","|ranges|" +"`P2328R1 `__","LWG",join_view should join all views of ranges,"June 2021","","","|ranges|" +"`P2367R0 `__","LWG",Remove misuses of list-initialization from Clause 24,"June 2021","","","|ranges|" "","","","","","" "`P2372R3 `__","LWG","Fixing locale handling in chrono formatters","October 2021","|In Progress|","" -"`P2415R2 `__","LWG","What is a ``view``","October 2021","|Complete|","14.0" +"`P2415R2 `__","LWG","What is a ``view``","October 2021","|Complete|","14.0","|ranges|" "`P2418R2 `__","LWG","Add support for ``std::generator``-like types to ``std::format``","October 2021","|Complete|","15.0" -"`P2432R1 `__","LWG","Fix ``istream_view``","October 2021","|Complete|","16.0" +"`P2432R1 `__","LWG","Fix ``istream_view``","October 2021","|Complete|","16.0","|ranges|" 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 @@ -4,11 +4,11 @@ "`3143 `__","``monotonic_buffer_resource`` growth policy is unclear","November 2020","","" "`3195 `__","What is the stored pointer value of an empty ``weak_ptr``?","November 2020","|Nothing To Do|","" "`3211 `__","``std::tuple<>`` should be trivially constructible","November 2020","|Complete|","9.0" -"`3236 `__","Random access iterator requirements lack limiting relational operators domain to comparing those from the same range","November 2020","|Nothing To Do|","","|ranges|" +"`3236 `__","Random access iterator requirements lack limiting relational operators domain to comparing those from the same range","November 2020","|Nothing To Do|","" "`3265 `__","``move_iterator``'s conversions are more broken after P1207","November 2020","Fixed by `LWG3435 `__","" "`3435 `__","``three_way_comparable_with, reverse_iterator>``","November 2020","|Complete|","13.0" "`3432 `__","Missing requirement for ``comparison_category``","November 2020","|Complete|","16.0","|spaceship|" -"`3447 `__","Deduction guides for ``take_view`` and ``drop_view`` have different constraints","November 2020","|Complete|","14.0" +"`3447 `__","Deduction guides for ``take_view`` and ``drop_view`` have different constraints","November 2020","|Complete|","14.0","|ranges|" "`3450 `__","The const overloads of ``take_while_view::begin/end`` are underconstrained","November 2020","|Complete|","16.0","|ranges|" "`3464 `__","``istream::gcount()`` can overflow","November 2020","","" "`2731 `__","Existence of ``lock_guard::mutex_type`` typedef unclear","November 2020","|Complete|","5.0" @@ -41,7 +41,7 @@ "`3461 `__","``convertible_to``'s description mishandles cv-qualified ``void``","November 2020","|Nothing To Do|","" "`3465 `__","``compare_partial_order_fallback`` requires ``F < E``","November 2020","|Complete|","14.0","|spaceship|" "`3466 `__","Specify the requirements for ``promise``/``future``/``shared_future`` consistently","November 2020","|Nothing To Do|","" -"`3467 `__","``bool`` can't be an integer-like type","November 2020","|Complete|","14.0" +"`3467 `__","``bool`` can't be an integer-like type","November 2020","|Complete|","14.0","|ranges|" "`3472 `__","``counted_iterator`` is missing preconditions","November 2020","|Complete|","14.0","|ranges|" "`3473 `__","Normative encouragement in non-normative note","November 2020","|Complete|","15.0","|format|" "`3474 `__","Nesting ``join_views`` is broken because of CTAD","November 2020","|Complete|","15.0","|ranges|" @@ -73,7 +73,7 @@ `3519 `__,"Incomplete synopses for ```` classes","June 2021","","" `3520 `__,"``iter_move`` and ``iter_swap`` are inconsistent for ``transform_view::iterator``","June 2021","|Complete|","14.0","|ranges|" `3521 `__,"Overly strict requirements on ``qsort`` and ``bsearch``","June 2021","|Nothing To Do|","" -`3522 `__,"Missing requirement on ``InputIterator`` template parameter for ``priority_queue`` constructors","June 2021","|Complete|","14.0","|ranges|" +`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","","","|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","","" @@ -104,7 +104,7 @@ `3123 `__,"``duration`` constructor from representation shouldn't be effectively non-throwing","October 2021","","","|chrono|" `3146 `__,"Excessive unwrapping in ``std::ref/cref``","October 2021","|Complete|","14.0" `3152 `__,"``common_type`` and ``common_reference`` have flaws in common","October 2021","","" -`3293 `__,"``move_iterator operator+()`` has incorrect constraints","October 2021","|Complete|","15.0","|ranges|" +`3293 `__,"``move_iterator operator+()`` has incorrect constraints","October 2021","|Complete|","15.0" `3361 `__,"``safe_range`` case","October 2021","|Nothing To Do|","","|ranges|" `3392 `__,"``ranges::distance()`` cannot be used on a move-only iterator with a sized sentinel","October 2021","|Complete|","14.0","|ranges|" `3407 `__,"Some problems with the wording changes of P1739R4","October 2021","|Complete|","15.0","|ranges|" @@ -120,7 +120,7 @@ `3561 `__,"Issue with internal counter in ``discard_block_engine``","October 2021","","" `3563 `__,"``keys_view`` example is broken","October 2021","","","|ranges|" `3566 `__,"Constraint recursion for ``operator<=>(optional, U)``","October 2021","","","|spaceship|" -`3567 `__,"Formatting move-only iterators take two","October 2021","|Complete|","16.0","|format|" +`3567 `__,"Formatting move-only iterators take two","October 2021","|Complete|","16.0","|format| |ranges|" `3568 `__,"``basic_istream_view`` needs to initialize ``value_``","October 2021","|Complete|","16.0","|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","","" @@ -150,13 +150,13 @@ "`3619 `__","Specification of ``vformat_to`` contains ill-formed ``formatted_size`` calls","February 2022","|Nothing to do|","","|format|" "`3621 `__","Remove feature-test macro ``__cpp_lib_monadic_optional`` ","February 2022","|Complete|","15.0" "`3632 `__","``unique_ptr`` ""Mandates: This constructor is not selected by class template argument deduction""","February 2022","|Nothing to do|","" -"`3643 `__","Missing ``constexpr`` in ``std::counted_iterator`` ","February 2022","","" +"`3643 `__","Missing ``constexpr`` in ``std::counted_iterator`` ","February 2022","","","|ranges|" "`3648 `__","``format`` should not print ``bool`` with ``'c'`` ","February 2022","|Complete|","15.0","|format|" "`3649 `__","[fund.ts.v2] Reinstate and bump ``__cpp_lib_experimental_memory_resource`` feature test macro","February 2022","","" "`3650 `__","Are ``std::basic_string`` 's ``iterator`` and ``const_iterator`` constexpr iterators?","February 2022","|Nothing to do|","" "`3654 `__","``basic_format_context::arg(size_t)`` should be ``noexcept`` ","February 2022","|Complete|","15.0","|format|" "`3657 `__","``std::hash`` is not enabled","February 2022","","" -"`3660 `__","``iterator_traits::pointer`` should conform to §[iterator.traits]","February 2022","|Complete|","14.0" +"`3660 `__","``iterator_traits::pointer`` should conform to §[iterator.traits]","February 2022","|Complete|","14.0","|ranges|" "`3661 `__","``constinit atomic> a(nullptr);`` should work","February 2022","","" "","","","","" "`3564 `__","``transform_view::iterator::value_type`` and ``iterator_category`` should use ``const F&``","July 2022","","","|ranges|" @@ -168,9 +168,9 @@ "`3672 `__","``common_iterator::operator->()`` should return by value","July 2022","","","|ranges|" "`3683 `__","``operator==`` for ``polymorphic_allocator`` cannot deduce template argument in common cases","July 2022","","" "`3687 `__","``expected`` move constructor should move","July 2022","","" -"`3692 `__","``zip_view::iterator``'s ``operator<=>`` is overconstrained","July 2022","","","|spaceship|" +"`3692 `__","``zip_view::iterator``'s ``operator<=>`` is overconstrained","July 2022","","","|ranges| |spaceship|" "`3701 `__","Make ``formatter, charT>`` requirement explicit","July 2022","","","|format|" -"`3702 `__","Should ``zip_transform_view::iterator`` remove ``operator<``","July 2022","","" +"`3702 `__","Should ``zip_transform_view::iterator`` remove ``operator<``","July 2022","","","|ranges| |spaceship|" "`3703 `__","Missing requirements for ``expected`` requires ``is_void``","July 2022","","" "`3704 `__","LWG 2059 added overloads that might be ill-formed for sets","July 2022","","" "`3705 `__","Hashability shouldn't depend on basic_string's allocator","July 2022","|Complete|","16.0" @@ -181,8 +181,8 @@ "`3711 `__","Missing preconditions for slide_view constructor","July 2022","","","|ranges|" "`3712 `__","``chunk_view`` and ``slide_view`` should not be ``default_initializable``","July 2022","","","|ranges|" "`3713 `__","Sorted with respect to comparator (only)","July 2022","","" -"`3715 `__","``view_interface::empty`` is overconstrained","July 2022","","" -"`3719 `__","Directory iterators should be usable with default sentinel","July 2022","","" +"`3715 `__","``view_interface::empty`` is overconstrained","July 2022","","","|ranges|" +"`3719 `__","Directory iterators should be usable with default sentinel","July 2022","","","|ranges|" "`3721 `__","Allow an ``arg-id`` with a value of zero for ``width`` in ``std-format-spec``","July 2022","|Complete|","16.0","|format|" "`3724 `__","``decay-copy`` should be constrained","July 2022","|Complete|","14.0" "","","","","" diff --git a/libcxx/docs/Status/Cxx2bPapers.csv b/libcxx/docs/Status/Cxx2bPapers.csv --- a/libcxx/docs/Status/Cxx2bPapers.csv +++ b/libcxx/docs/Status/Cxx2bPapers.csv @@ -1,25 +1,25 @@ -"Paper #","Group","Paper Name","Meeting","Status","First released version" +"Paper #","Group","Paper Name","Meeting","Status","First released version","Labels" "`P0881R7 `__","LWG","A Proposal to add stacktrace library","Autumn 2020","","" "`P0943R6 `__","LWG","Support C atomics in C++","Autumn 2020","|Complete|","15.0" "`P1048R1 `__","LWG","A proposal for a type trait to detect scoped enumerations","Autumn 2020","|Complete|","12.0" "`P1679R3 `__","LWG","string contains function","Autumn 2020","|Complete|","12.0" "","","","","","" "`P1682R3 `__","LWG","std::to_underlying for enumerations","February 2021","|Complete|","13.0" -"`P2017R1 `__","LWG","Conditionally borrowed ranges","February 2021","","" +"`P2017R1 `__","LWG","Conditionally borrowed ranges","February 2021","","","|ranges|" "`P2160R1 `__","LWG","Locks lock lockables","February 2021","","" "`P2162R2 `__","LWG","Inheriting from std::variant","February 2021","|Complete|","13.0" "`P2212R2 `__","LWG","Relax Requirements for time_point::clock","February 2021","","" -"`P2259R1 `__","LWG","Repairing input range adaptors and counted_iterator","February 2021","","" +"`P2259R1 `__","LWG","Repairing input range adaptors and counted_iterator","February 2021","","","|ranges|" "","","","","","" "`P0401R6 `__","LWG","Providing size feedback in the Allocator interface","June 2021","|Complete|","15.0" "`P0448R4 `__","LWG","A strstream replacement using span as buffer","June 2021","","" "`P1132R8 `__","LWG","out_ptr - a scalable output pointer abstraction","June 2021","","" "`P1328R1 `__","LWG","Making std::type_info::operator== constexpr","June 2021","","" -"`P1425R4 `__","LWG","Iterators pair constructors for stack and queue","June 2021","|Complete|","14.0" +"`P1425R4 `__","LWG","Iterators pair constructors for stack and queue","June 2021","|Complete|","14.0","|ranges|" "`P1518R2 `__","LWG","Stop overconstraining allocators in container deduction guides","June 2021","|Complete|","13.0" -"`P1659R3 `__","LWG","starts_with and ends_with","June 2021","","" +"`P1659R3 `__","LWG","starts_with and ends_with","June 2021","","","|ranges|" "`P1951R1 `__","LWG","Default Arguments for pair Forwarding Constructor","June 2021","|Complete|","14.0" -"`P1989R2 `__","LWG","Range constructor for std::string_view","June 2021","|Complete|","14.0" +"`P1989R2 `__","LWG","Range constructor for std::string_view","June 2021","|Complete|","14.0","|ranges|" "`P2136R3 `__","LWG","invoke_r","June 2021","","" "`P2166R1 `__","LWG","A Proposal to Prohibit std::basic_string and std::basic_string_view construction from nullptr","June 2021","|Complete|","13.0" "","","","","","" @@ -33,7 +33,7 @@ "`P2077R3 `__","LWG","Heterogeneous erasure overloads for associative containers","October 2021","","" "`P2251R1 `__","LWG","Require ``span`` & ``basic_string_view`` to be Trivially Copyable","October 2021","|Complete|","14.0" "`P2301R1 `__","LWG","Add a ``pmr`` alias for ``std::stacktrace``","October 2021","","" -"`P2321R2 `__","LWG","``zip``","October 2021","|In Progress|","" +"`P2321R2 `__","LWG","``zip``","October 2021","|In Progress|","","|ranges|" "`P2340R1 `__","LWG","Clarifying the status of the 'C headers'","October 2021","","" "`P2393R1 `__","LWG","Cleaning up ``integer``-class types","October 2021","","" "`P2401R0 `__","LWG","Add a conditional ``noexcept`` specification to ``std::exchange``","October 2021","|Complete|","14.0" @@ -41,51 +41,51 @@ "`P0323R12 `__","LWG","``std::expected``","February 2022","","" "`P0533R9 `__","LWG","``constexpr`` for ```` and ````","February 2022","","" "`P0627R6 `__","LWG","Function to mark unreachable code","February 2022","|Complete|","15.0" -"`P1206R7 `__","LWG","``ranges::to``: A function to convert any range to a container","February 2022","","" +"`P1206R7 `__","LWG","``ranges::to``: A function to convert any range to a container","February 2022","","","|ranges|" "`P1413R3 `__","LWG","Deprecate ``std::aligned_storage`` and ``std::aligned_union``","February 2022","","" -"`P2255R3 `__","LWG","A type trait to detect reference binding to temporary","February 2022","","" +"`P2255R2 `__","LWG","A type trait to detect reference binding to temporary","February 2022","","" "`P2273R3 `__","LWG","Making ``std::unique_ptr`` constexpr","February 2022","|Partial| [#note-P2273]_","16.0" -"`P2387R3 `__","LWG","Pipe support for user-defined range adaptors","February 2022","","" -"`P2440R1 `__","LWG","``ranges::iota``, ``ranges::shift_left`` and ``ranges::shift_right``","February 2022","","" -"`P2441R2 `__","LWG","``views::join_view``","February 2022","","" -"`P2442R1 `__","LWG","Windowing range adaptors: ``views::chunk`` and ``views::slide``","February 2022","","" -"`P2443R1 `__","LWG","``views::chunk_by``","February 2022","","" +"`P2387R3 `__","LWG","Pipe support for user-defined range adaptors","February 2022","","","|ranges|" +"`P2440R1 `__","LWG","``ranges::iota``, ``ranges::shift_left`` and ``ranges::shift_right``","February 2022","","","|ranges|" +"`P2441R2 `__","LWG","``views::join_with``","February 2022","","","|ranges|" +"`P2442R1 `__","LWG","Windowing range adaptors: ``views::chunk`` and ``views::slide``","February 2022","","","|ranges|" +"`P2443R1 `__","LWG","``views::chunk_by``","February 2022","","","|ranges|" "","","","","","" "`P0009R18 `__","LWG","mdspan: A Non-Owning Multidimensional Array Reference","July 2022","","" "`P0429R9 `__","LWG","A Standard ``flat_map``","July 2022","","" "`P1169R4 `__","LWG","``static operator()``","July 2022","","" "`P1222R4 `__","LWG","A Standard ``flat_set``","July 2022","","" -"`P1223R5 `__","LWG","``ranges::find_last()``, ``ranges::find_last_if()``, and ``ranges::find_last_if_not()``","July 2022","","" +"`P1223R5 `__","LWG","``ranges::find_last()``, ``ranges::find_last_if()``, and ``ranges::find_last_if_not()``","July 2022","","","|ranges|" "`P1467R9 `__","LWG","Extended ``floating-point`` types and standard names","July 2022","","" "`P1642R11 `__","LWG","Freestanding ``[utilities]``, ``[ranges]``, and ``[iterators]``","July 2022","","" -"`P1899R3 `__","LWG","``stride_view``","July 2022","","" +"`P1899R3 `__","LWG","``stride_view``","July 2022","","","|ranges|" "`P2093R14 `__","LWG","Formatted output","July 2022","","" "`P2165R4 `__","LWG","Compatibility between ``tuple``, ``pair`` and ``tuple-like`` objects","July 2022","","" -"`P2278R4 `__","LWG","``cbegin`` should always return a constant iterator","July 2022","","" -"`P2286R8 `__","LWG","Formatting Ranges","July 2022","","" +"`P2278R4 `__","LWG","``cbegin`` should always return a constant iterator","July 2022","","","|ranges|" +"`P2286R8 `__","LWG","Formatting Ranges","July 2022","","","|format| |ranges|" "`P2291R3 `__","LWG","Add Constexpr Modifiers to Functions ``to_chars`` and ``from_chars`` for Integral Types in ```` Header","July 2022","|Complete|","16.0" -"`P2302R4 `__","LWG","``std::ranges::contains``","July 2022","","" -"`P2322R6 `__","LWG","``ranges::fold``","July 2022","","" -"`P2374R4 `__","LWG","``views::cartesian_product``","July 2022","","" +"`P2302R4 `__","LWG","``std::ranges::contains``","July 2022","","","|ranges|" +"`P2322R6 `__","LWG","``ranges::fold``","July 2022","","","|ranges|" +"`P2374R4 `__","LWG","``views::cartesian_product``","July 2022","","","|ranges|" "`P2404R3 `__","LWG","Move-only types for ``equality_comparable_with``, ``totally_ordered_with``, and ``three_way_comparable_with``","July 2022","","" -"`P2408R5 `__","LWG","Ranges iterators as inputs to non-Ranges algorithms","July 2022","","" +"`P2408R5 `__","LWG","Ranges iterators as inputs to non-Ranges algorithms","July 2022","","","|ranges|" "`P2417R2 `__","LWG","A more ``constexpr`` ``bitset``","July 2022","|Complete|","16.0" "`P2419R2 `__","LWG","Clarify handling of encodings in localized formatting of chrono types","July 2022","","" "`P2438R2 `__","LWG","``std::string::substr() &&``","July 2022","","" "`P2445R1 `__","LWG","``forward_like``","July 2022","|Complete|","16.0" -"`P2446R2 `__","LWG","``views::as_rvalue``","July 2022","","" +"`P2446R2 `__","LWG","``views::as_rvalue``","July 2022","","","|ranges|" "`P2460R2 `__","LWG","Relax requirements on ``wchar_t`` to match existing practices","July 2022","","" "`P2465R3 `__","LWG","Standard Library Modules ``std`` and ``std.compat``","July 2022","","" "`P2467R1 `__","LWG","Support exclusive mode for ``fstreams``","July 2022","","" -"`P2474R2 `__","LWG","``views::repeat``","July 2022","","" -"`P2494R2 `__","LWG","Relaxing range adaptors to allow for move only types","July 2022","","" -"`P2499R0 `__","LWG","``string_view`` range constructor should be ``explicit``","July 2022","|Complete|","16.0" -"`P2502R2 `__","LWG","``std::generator``: Synchronous Coroutine Generator for Ranges","July 2022","","" +"`P2474R2 `__","LWG","``views::repeat``","July 2022","","","|ranges|" +"`P2494R2 `__","LWG","Relaxing range adaptors to allow for move only types","July 2022","","","|ranges|" +"`P2499R0 `__","LWG","``string_view`` range constructor should be ``explicit``","July 2022","|Complete|","16.0","|ranges|" +"`P2502R2 `__","LWG","``std::generator``: Synchronous Coroutine Generator for Ranges","July 2022","","","|coroutines| |ranges|" "`P2508R1 `__","LWG","Exposing ``std::basic-format-string``","July 2022","|Complete|","15.0" "`P2513R4 `__","LWG","``char8_t`` Compatibility and Portability Fixes","July 2022","","" "`P2517R1 `__","LWG","Add a conditional ``noexcept`` specification to ``std::apply``","July 2022","","" -"`P2520R0 `__","LWG","``move_iterator`` should be a random access iterator","July 2022","","" -"`P2540R1 `__","LWG","Empty Product for certain Views","July 2022","","" +"`P2520R0 `__","LWG","``move_iterator`` should be a random access iterator","July 2022","","","|ranges|" +"`P2540R1 `__","LWG","Empty Product for certain Views","July 2022","","","|ranges|" "`P2549R1 `__","LWG","``std::unexpected`` should have ``error()`` as member accessor","July 2022","","" "`P2553R1 `__","LWG","Make ``mdspan`` ``size_type`` controllable","July 2022","","" "`P2554R0 `__","LWG","C-Array Interoperability of MDSpan","July 2022","","" diff --git a/libcxx/docs/Status/RangeViews.csv b/libcxx/docs/Status/RangeViews.csv new file mode 100644 --- /dev/null +++ b/libcxx/docs/Status/RangeViews.csv @@ -0,0 +1,35 @@ +Standard,View,Assignee,CL,Status +C++20,`[empty] `_,Zoe Carver,`D103208 `_,✅ +C++20,`[single] `_,Zoe Carver,`D106840 `_,✅ +C++20,`[iota] `_,Zoe Carver,`D107396 `_,✅ +C++20,`[all] `_,Zoe Carver,`D102028 `_,✅ +C++20,`[ref_view] `_,Zoe Carver,`D102020 `_,✅ +C++20,`[owning_view] `_,Arthur O'Dwyer,`D116894 `_,✅ +C++20,`[filter] `_,Louis Dionne,`D109086 `_,✅ +C++20,`[transform] `_,Zoe Carver,`D103056 `_,✅ +C++20,`[take] `_,Zoe Carver,`D106507 `_,✅ +C++20,`[take_while] `_,Hui Xie,`D134952 `_,✅ +C++20,`[drop] `_,Zoe Carver,`D102037 `_,✅ +C++20,`[drop_while] `_,Hui Xie,`D135460 `_,✅ +C++20,`[join] `_,Zoe Carver,`D107671 `_,✅ +C++20,`[split] `_,Unassigned,No patch yet,Not started +C++20,`[lazy_split] `_,Zoe Carver and Konstantin Varlamov,`D107500 `_,✅ +C++20,`[counted] `_,Zoe Carver,`D106923 `_,✅ +C++20,`[common] `_,Zoe Carver,`D105753 `_,✅ +C++20,`[reverse] `_,Zoe Carver,`D107096 `_,✅ +C++20,`[elements, keys, values] `_,Unassigned,No patch yet,Not started +C++20,`[istream] `_,Hui Xie,`D133317 `_,✅ +,,,, +C++23,`[repeat] `_,Unassigned,No patch yet,Not started +C++23,`[cartesian_product] `_,Unassigned,No patch yet,Not started +C++23,`[zip] `_,Hui Xie,`D122806 `_,✅ +C++23,`[zip_transform] `_,Hui Xie,No patch yet,Not started +C++23,`[adjacent] `_,Hui Xie,No patch yet,Not started +C++23,`[adjacent_transform] `_,Hui Xie,No patch yet,Not started +C++23,`[join_with] `_,Unassigned,No patch yet,Not started +C++23,`[slide] `_,Unassigned,No patch yet,Not started +C++23,`[chunk] `_,Unassigned,No patch yet,Not started +C++23,`[chunk_by] `_,Unassigned,No patch yet,Not started +C++23,`[as_const] `_,Unassigned,No patch yet,Not started +C++23,`[as_rvalue] `_,Unassigned,No patch yet,Not started +C++23,`[stride] `_,Unassigned,No patch yet,Not started diff --git a/libcxx/docs/Status/Ranges.rst b/libcxx/docs/Status/Ranges.rst --- a/libcxx/docs/Status/Ranges.rst +++ b/libcxx/docs/Status/Ranges.rst @@ -1,4 +1,4 @@ -.. ranges-status: +a. ranges-status: ================================ libc++ Ranges Status @@ -13,43 +13,51 @@ Overview ================================ -This document contains the status of the C++20 Ranges library in libc++. It is used to -track both the status of the sub-projects of the ranges library and who is assigned to -these sub-projects. This is imperative to effective implementation so that work is not +This document contains the status of the Ranges library in libc++. It is used to track +both the status of the sub-projects of the ranges library and who is assigned to these +sub-projects. This is imperative to effective implementation so that work is not duplicated and implementors are not blocked by each other. If you are interested in contributing to the libc++ Ranges library, please send a message to the #libcxx channel in the LLVM discord. Please *do not* start working on any of the -assigned items below. +*assigned* items below. -Sub-Projects in the One Ranges Proposal +Major features ======================================= .. csv-table:: - :file: RangesPaper.csv + :file: RangesMajorFeatures.csv :header-rows: 1 :widths: auto +Views +======================================= + .. csv-table:: - :file: RangesAlgorithms.csv + :file: RangesViews.csv :header-rows: 1 :widths: auto +Algorithms +======================================= -Misc. Items and TODOs -==================================== +.. csv-table:: + :file: RangesAlgorithms.csv + :header-rows: 1 + :widths: auto -(Note: files with required updates will contain the TODO at the beginning of the list item -so they can be easily found via global search.) +All papers +==================================== - * TODO(XX_SPACESHIP_CONCEPTS): when spaceship support is added to various STL types, we need to update some concept tests. +.. csv-table:: + :file: RangesPapers.csv + :header-rows: 1 + :widths: auto -Paper and Issue Status +Issues ==================================== -(Note: stolen from MSVC `here `_.) - .. csv-table:: :file: RangesIssues.csv :header-rows: 1 diff --git a/libcxx/docs/Status/RangesAlgorithms.csv b/libcxx/docs/Status/RangesAlgorithms.csv --- a/libcxx/docs/Status/RangesAlgorithms.csv +++ b/libcxx/docs/Status/RangesAlgorithms.csv @@ -1,100 +1,12 @@ -Category,Algorithm,Assignee,CL,Complete -Search,any_of,Nikolas Klauser,`D123016 `_,✅ -Search,all_of,Nikolas Klauser,`D123016 `_,✅ -Search,none_of,Nikolas Klauser,`D123016 `_,✅ -Search,find,Nikolas Klauser,`D121248 `_,✅ -Search,find_if,Nikolas Klauser,`D121248 `_,✅ -Search,find_if_not,Nikolas Klauser,`D121248 `_,✅ -Search,find_first_of,Nikolas Klauser,`D126529 `_,✅ -Search,adjacent_find,Nikolas Klauser,`D126610 `_,✅ -Search,mismatch,Nikolas Klauser,`D117817 `_,✅ -Search,equal,Nikolas Klauser,`D123681 `_,✅ -Search,lexicographical_compare,Nikolas Klauser,`D127130 `_,✅ -Search,partition_point,Konstantin Varlamov,`D130070 `_,✅ -Search,lower_bound,Nikolas Klauser,`D121964 `_,✅ -Search,upper_bound,Nikolas Klauser,`D121964 `_,✅ -Search,equal_range,Hui Xie,`D129796 `_,✅ -Search,binary_search,Nikolas Klauser,`D121964 `_,✅ -Search,min,Nikolas Klauser,`D119589 `_,✅ -Search,max,Nikolas Klauser,`D122002 `_,✅ -Search,minmax,Nikolas Klauser,`D120637 `_,✅ -Search,min_element,Nikolas Klauser,`D117025 `_,✅ -Search,max_element,Nikolas Klauser,`D117523 `_,✅ -Search,minmax_element,Nikolas Klauser,`D120637 `_,✅ -Search,count,Nikolas Klauser,`D121523 `_,✅ -Search,count_if,Nikolas Klauser,`D121523 `_,✅ -Search,search,Nikolas Klauser,`D124079 `_,✅ -Search,search_n,Nikolas Klauser,`D124079 `_,✅ -Search,find_end,Nikolas Klauser,`D124079 `_,✅ -Read-only,is_partitioned,Nikolas Klauser,`D124440 `_,✅ -Read-only,is_sorted,Nikolas Klauser,`D125608 `_,✅ -Read-only,is_sorted_until,Nikolas Klauser,`D125608 `_,✅ -Read-only,includes,Hui Xie,`D130116 `_,✅ -Read-only,is_heap,Konstantin Varlamov,`D130547 `_,✅ -Read-only,is_heap_until,Konstantin Varlamov,`D130547 `_,✅ -Read-only,clamp,Nikolas Klauser,`D126193 `_,✅ -Read-only,is_permutation,Nikolas Klauser,`D127194 `_,✅ -Read-only,for_each,Nikolas Klauser,`D124332 `_,✅ -Read-only,for_each_n,Nikolas Klauser,`D124332 `_,✅ -Write,copy,Nikolas Klauser,`D122982 `_,✅ -Write,copy_if,Nikolas Klauser,`D122982 `_,✅ -Write,copy_n,Nikolas Klauser,`D122982 `_,✅ -Write,copy_backward,Nikolas Klauser,`D122982 `_,✅ -Write,move,Nikolas Klauser,`D126616 `_,✅ -Write,move_backward,Nikolas Klauser,`D126616 `_,✅ -Write,fill,Nikolas Klauser,`D123462 `_,✅ -Write,fill_n,Nikolas Klauser,`D123462 `_,✅ -Write,transform,Nikolas Klauser,`D122173 `_,✅ -Write,generate,Konstantin Varlamov,`D130552 `_,✅ -Write,generate_n,Konstantin Varlamov,`D130552 `_,✅ -Write,remove_copy,Nikolas Klauser,`D130599 `_,✅ -Write,remove_copy_if,Nikolas Klauser,`D130599 `_,✅ -Write,replace,Nikolas Klauser,`D126283 `_,✅ -Write,replace_if,Nikolas Klauser,`D126283 `_,✅ -Write,replace_copy,Nikolas Klauser,`D129806 `_,✅ -Write,replace_copy_if,Nikolas Klauser,`D129806 `_,✅ -Write,swap_ranges,Nikolas Klauser,`D116303 `_,✅ -Write,reverse_copy,Nikolas Klauser,`D127211 `_,✅ -Write,rotate_copy,Nikolas Klauser,`D127211 `_,✅ -Write,sample,Konstantin Varlamov,`D130865 `_,✅ -Write,unique_copy,Hui Xie,`D130404 `_,✅ -Write,partition_copy,Konstantin Varlamov,`D130070 `_,✅ -Write,partial_sort_copy,Konstantin Varlamov,`D130532 `_,✅ -Merge,merge,Hui Xie,`D128611 `_,✅ -Merge,set_difference,Hui Xie,`D128983 `_,✅ -Merge,set_intersection,Hui Xie,`D129233 `_,✅ -Merge,set_symmetric_difference,Hui Xie,`D129520 `_,✅ -Merge,set_union,Hui Xie,`D129657 `_,✅ -Permutation,remove,Nikolas Klauser,`D128618 `_,✅ -Permutation,remove_if,Nikolas Klauser,`D128618 `_,✅ -Permutation,reverse,Nikolas Klauser,`D125752 `_,✅ -Permutation,rotate,Konstantin Varlamov and Nikolas Klauser,`D130758 `_,✅ -Permutation,shuffle,Konstantin Varlamov,`D130321 `_,✅ -Permutation,unique,Hui Xie,`D130404 `_,✅ -Permutation,partition,Konstantin Varlamov,`D129624 `_,✅ -Permutation,stable_partition,Konstantin Varlamov,`D129624 `_,✅ -Permutation,sort,Konstantin Varlamov,`D127557 `_,✅ -Permutation,stable_sort,Konstantin Varlamov,`D127834 `_,✅ -Permutation,nth_element,Konstantin Varlamov,`D128149 `_,✅ -Permutation,partial_sort,Konstantin Varlamov,`D128744 `_,✅ -Permutation,inplace_merge,Hui Xie,`D130627 `_,✅ -Permutation,make_heap,Konstantin Varlamov,`D128115 `_,✅ -Permutation,push_heap,Konstantin Varlamov,`D128115 `_,✅ -Permutation,pop_heap,Konstantin Varlamov,`D128115 `_,✅ -Permutation,sort_heap,Konstantin Varlamov,`D128115 `_,✅ -Permutation,next_permutation,Nikolas Klauser,`D129859 `_,✅ -Permutation,prev_permutation,Nikolas Klauser,`D129859 `_,✅ -Uninitialised memory,uninitialized_copy,Konstantin Varlamov,`D116023 `_,✅ -Uninitialised memory,uninitialized_copy_n,Konstantin Varlamov,`D116023 `_,✅ -Uninitialised memory,uninitialized_fill,Konstantin Varlamov,`D115626 `_,✅ -Uninitialised memory,uninitialized_fill_n,Konstantin Varlamov,`D115626 `_,✅ -Uninitialised memory,uninitialized_move,Konstantin Varlamov,`D116023 `_,✅ -Uninitialised memory,uninitialized_move_n,Konstantin Varlamov,`D116023 `_,✅ -Uninitialised memory,uninitialized_default_construct,Konstantin Varlamov,`D115315 `_,✅ -Uninitialised memory,uninitialized_default_construct_n,Konstantin Varlamov,`D115315 `_,✅ -Uninitialised memory,uninitialized_value_construct,Konstantin Varlamov,`D115626 `_,✅ -Uninitialised memory,uninitialized_value_construct_n,Konstantin Varlamov,`D115626 `_,✅ -Uninitialised memory,destroy,Konstantin Varlamov,`D116078 `_,✅ -Uninitialised memory,destroy_n,Konstantin Varlamov,`D116078 `_,✅ -Uninitialised memory,destroy_at,Konstantin Varlamov,`D116078 `_,✅ -Uninitialised memory,construct_at,Konstantin Varlamov,`D116078 `_,✅ +Standard,Algorithm,Assignee,CL,Status +C++20,[all C++20 algorithms],N/A,N/A,✅ +C++23,`[find_last] `_,Unassigned,No patch yet,Not started +C++23,`[find_last_if] `_,Unassigned,No patch yet,Not started +C++23,`[find_last_if_not] `_,Unassigned,No patch yet,Not started +C++23,`[starts_with] `_,Unassigned,No patch yet,Not started +C++23,`[ends_with] `_,Unassigned,No patch yet,Not started +C++23,`[shift_left] `_,Unassigned,No patch yet,Not started +C++23,`[shift_right] `_,Unassigned,No patch yet,Not started +C++23,`[iota] `_,Unassigned,No patch yet,Not started +C++23,`[fold] `_,Unassigned,No patch yet,Not started +C++23,`[contains] `_,Unassigned,No patch yet,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 @@ -1,33 +1,128 @@ -"Number","Name","Status","First released version" -`P0896R4 `__,,|Complete|,15.0 -`P1035R7 `__,Input Range Adaptors,, -`P1207R4 `__,Movability Of Single-Pass Iterators,|Complete|,15.0 -`P1243R4 `__,Rangify New Algorithms,|Complete|,15.0 -`P1248R1 `__,Fixing Relations,|Complete|,13.0 -`P1252R2 `__,Ranges Design Cleanup,|Complete|,15.0 -`P1391R4 `__,Range Constructor For string_view,|Complete|,14.0 -`P1456R1 `__,Move-Only Views,|Complete|,15.0 -`P1474R1 `__,Helpful Pointers For contiguous_iterator,|Complete|,15.0 -`P1522R1 `__,Iterator Difference Type And Integer Overflow,|Complete|,15.0 -`P1523R1 `__,Views And Size Types,|Complete|,15.0 -`P1638R1 `__,basic_istream_view::iterator Should Not Be Copyable,, -`P1716R3 `__,Range Comparison Algorithms Are Over-Constrained,|Complete|,15.0 -`P1739R4 `__,Avoiding Template Bloat For Ranges,|Complete|,15.0 -`P1862R1 `__,Range Adaptors For Non-Copyable Iterators,, -`P1870R1 `__,forwarding-range is too subtle,|Complete|,15.0 -`P1871R1 `__,Concept traits should be named after concepts,|Complete|,14.0 -`P1878R1 `__,Constraining Readable Types,|Complete|,15.0 -`P1970R2 `__,Consistency for size() functions: Add ranges::ssize,|Complete|,15.0 -`P1983R0 `__,"Wording for GB301, US296, US292, US291, and US283",|Complete|,15.0 -`P1994R1 `__,elements_view Needs Its Own sentinel,, -`P2091R0 `__,Fixing Issues With Range Access CPOs,|Complete|,15.0 -`P2106R0 `__,Alternative wording for GB315 and GB316,|Complete|,15.0 - -`P2325R3 `__,Views should not be required to be default constructible ,, -`P2328R1 `__,join_view should join all views of ranges,|Complete|,14.0 -`P2210R2 `__,Superior String Splitting,, -`P2281R1 `__,Clarifying range adaptor objects,|Complete|,14.0 -`P2367R0 `__,Remove misuses of list-initialization from Clause 24,, - -`P2415 `__,"What is a ``view``",|Complete|,14.0 -`P2432 `__,"Fix ``istream_view``",, +"Number","Name","Status" +"`3173 `__","Enable CTAD for ``ref-view``\ ",✅ +"`3179 `__","``subrange``\ should always model ``Range``\ ","|Nothing To Do|" +"`3180 `__","Inconsistently named return type for ``ranges::minmax_element``\ ",✅ +"`3169 `__","``ranges``\ permutation generators discard useful information",✅ +"`3183 `__","Normative permission to specialize Ranges variable templates","|Nothing To Do|" +"`3186 `__","``ranges``\ removal, partition, and ``partial_sort_copy``\ algorithms discard useful information",✅ +"`3191 `__","``std::ranges::shuffle``\ synopsis does not match algorithm definition",✅ +"`3276 `__","Class ``split_view::outer_iterator::value_type``\ should inherit from ``view_interface``\ ",✅ +"`3277 `__","Pre-increment on prvalues is not a requirement of ``weakly_incrementable``\ ","|Nothing To Do|" +"`3150 `__","``UniformRandomBitGenerator``\ should validate ``min``\ and ``max``\ ",✅ +"`3247 `__","``ranges::iter_move``\ should perform ADL-only lookup of ``iter_move``\ ",✅ +"`3264 `__","``sized_range``\ and ``ranges::size``\ redundantly use ``disable_sized_range``\ ",✅ +"`3280 `__","View converting constructors can cause constraint recursion and are unneeded",✅ +"`3281 `__","Conversion from ``*pair-like*``\ types to ``subrange``\ is a silent semantic promotion",✅ +"`3282 `__","``subrange``\ converting constructor should disallow derived to base conversions",✅ +"`3284 `__","``random_access_iterator``\ semantic constraints accidentally promote difference type using unary negate","|Nothing To Do|" +"`3285 `__","The type of a customization point object shall satisfy ``semiregular``\ ","|Nothing To Do|" +"`3286 `__","``ranges::size``\ is not required to be valid after a call to ``ranges::begin``\ on an input range",✅ +"`3291 `__","``iota_view::iterator``\ has the wrong ``iterator_category``\ ",✅ +"`3292 `__","``iota_view``\ is under-constrained",✅ +"`3299 `__","Pointers don't need customized iterator behavior",✅ +"`3301 `__","``transform_view::iterator``\ has incorrect ``iterator_category``\ ",✅ +"`3302 `__","Range adaptor objects ``keys``\ and ``values``\ are unspecified","Not started" +"`3313 `__","``join_view::iterator::operator--``\ is incorrectly constrained",✅ +"`3320 `__","``span::cbegin/cend``\ methods produce different results than ``std::[ranges::]cbegin/cend``\ ",✅,"Not started" +"`3323 `__","``*has-tuple-element*``\ helper concept needs ``convertible_to``\ ","Not started" +"`3325 `__","Constrain return type of transformation function for ``transform_view``\ ",✅ +"`3326 `__","``enable_view``\ has false positives",✅ +"`3335 `__","Resolve C++20 NB comments US 273 and GB 274",✅ +"`3351 `__","``ranges::enable_safe_range``\ should not be constrained",✅ +"`3355 `__","The memory algorithms should support move-only input iterators introduced by P1207",✅ +"`3363 `__","``drop_while_view``\ should opt-out of ``sized_range``\ ","|Nothing To Do|" +"`3364 `__","Initialize data members of ranges and their iterators","Not started" +"`3375 `__","``decay``\ in ``viewable_range``\ should be ``remove_cvref``\ ",✅ +"`3377 `__","``elements_view::iterator``\ befriends a specialization of itself","Not started" +"`3379 `__","``safe``\ "" in several library names is misleading",✅ +"`3381 `__","``begin``\ and ``data``\ must agree for ``contiguous_range``\ ","|Nothing To Do|" +"`3384 `__","``transform_view::*sentinel*``\ has an incorrect ``operator-``\ ",✅ +"`3385 `__","``common_iterator``\ is not sufficiently constrained for non-copyable iterators",✅ +"`3387 `__","|sect|\ [range.reverse.view] ``reverse_view``\ unintentionally requires ``range``\ ",✅ +"`3388 `__","``view``\ iterator types have ill-formed ``<=>``\ operators","Not started" +"`3389 `__","A move-only iterator still does not have a ``counted_iterator``\ ",✅ +"`3390 `__","``make_move_iterator()``\ cannot be used to construct a ``move_iterator``\ for a move-only iterator",✅ +"`3397 `__","``ranges::basic_istream_view::iterator``\ should not provide ``iterator_category``\ ",✅ +"`3398 `__","``tuple_element_t``\ is also wrong for ``const subrange``\ ",✅ +"`3446 `__","``indirectly_readable_traits``\ ambiguity for types with both ``value_type``\ and ``element_type``\ ",✅ +"","","" +"`3447 `__","Deduction guides for ``take_view`` and ``drop_view`` have different constraints",✅ +"`3450 `__","The const overloads of ``take_while_view::begin/end`` are underconstrained",✅ +"`3306 `__","``ranges::advance`` violates its preconditions",✅ +"`3403 `__","Domain of ``ranges::ssize(E)`` doesn't ``match ranges::size(E)``","Not started" +"`3404 `__","Finish removing subrange's conversions from pair-like","Not started" +"`3405 `__","``common_view``'s converting constructor is bad, too",✅ +"`3406 `__","``elements_view::begin()`` and ``elements_view::end()`` have incompatible constraints","Not started" +"`3420 `__","cpp17-iterator should check that the type looks like an iterator first",✅ +"`3421 `__","Imperfect ADL emulation for boolean-testable","|Nothing To Do|" +"`3428 `__","``single_view``'s in place constructor should be explicit",✅ +"`3446 `__","``indirectly_readable_traits`` ambiguity for types with both ``value_type`` and ``element_type``",✅ +"`3448 `__","``transform_view``'s ``sentinel`` not comparable with ``iterator``","Not started" +"`3449 `__","``take_view`` and ``take_while_view``'s ``sentinel`` not comparable with their ``const iterator``",✅ +"`3453 `__","Generic code cannot call ``ranges::advance(i, s)``","|Nothing To Do|" +"`3467 `__","``bool`` can't be an integer-like type",✅ +"`3472 `__","``counted_iterator`` is missing preconditions",✅ +"`3474 `__","Nesting ``join_views`` is broken because of CTAD",✅ +"`3477 `__","Simplify constraints for ``semiregular-box``","Not started" +"`3482 `__","``drop_view``'s const begin should additionally require ``sized_range``",✅ +"`3483 `__","``transform_view::iterator``'s difference is overconstrained",✅ +"`3391 `__","Problems with ``counted_iterator``/``move_iterator::base() const &``","Not started" +"`3433 `__","``subrange::advance(n)`` has UB when ``n < 0``",✅ +"`3490 `__","``ranges::drop_while_view::begin()`` is missing a precondition","|Nothing To Do|" +"`3492 `__","Minimal improvements to ``elements_view::iterator``","Not started" +"`3494 `__","Allow ranges to be conditionally borrowed","Superseded by `P2017R1 `__","Not started" +"`3500 `__","``join_view::iterator::operator->()`` is bogus",✅ +"`3502 `__","``elements_view`` should not be allowed to return dangling reference","Not started" +"`3505 `__","``split_view::outer-iterator::operator++`` misspecified","Not started" +`3481 `__,"``viewable_range`` mishandles lvalue move-only views","Superseded by `P2415R2 `__","Not started" +`3517 `__,"``join_view::iterator``'s ``iter_swap`` is underconstrained",✅ +`3520 `__,"``iter_move`` and ``iter_swap`` are inconsistent for ``transform_view::iterator``",✅ +`3523 `__,"``iota_view::sentinel`` is not always ``iota_view``'s sentinel","Not started" +`3532 `__,"``split_view::inner-iterator::operator++(int)`` should depend on ``Base``","Not started" +`3533 `__,"Make ``base() const &`` consistent across iterator wrappers that supports ``input_iterators``",✅ +`3541 `__,"``indirectly_readable_traits`` should be SFINAE-friendly for all types",✅ +`3543 `__,"Definition of when ``counted_iterators`` refer to the same sequence isn't quite right","|Nothing To Do|" +`3546 `__,"``common_iterator``'s postfix-proxy is not quite right","Not started" +`3549 `__,"``view_interface`` is overspecified to derive from ``view_base``",✅ +`3551 `__,"``borrowed_{iterator,subrange}_t`` are overspecified","|Nothing To Do|" +`3553 `__,"Useless constraint in ``split_view::outer-iterator::value_type::begin()``","Not started" +`3555 `__,"``{transform,elements}_view::iterator::iterator_concept`` should consider const-qualification of the underlying range","Not started" +`3361 `__,"``safe_range`` case","|Nothing To Do|" +`3392 `__,"``ranges::distance()`` cannot be used on a move-only iterator with a sized sentinel",✅ +`3407 `__,"Some problems with the wording changes of P1739R4",✅ +`3470 `__,"``convertible-to-non-slicing`` seems to reject valid case",✅ +`3480 `__,"``directory_iterator`` and ``recursive_directory_iterator`` are not C++20 ranges",✅ +`3535 `__,"``join_view::iterator::iterator_category`` and ``::iterator_concept`` lie",✅ +`3559 `__,"Semantic requirements of ``sized_range`` is circular","|Nothing To Do|" +`3560 `__,"``ranges::equal`` and ``ranges::is_permutation`` should short-circuit for ``sized_ranges``","Not started" +`3563 `__,"``keys_view`` example is broken","Not started" +`3567 `__,"Formatting move-only iterators take two",✅ +`3568 `__,"``basic_istream_view`` needs to initialize ``value_``",✅ +`3572 `__,"``copyable-box`` should be fully ``constexpr``",✅ +`3574 `__,"``common_iterator`` should be completely ``constexpr``-able",✅ +`3580 `__,"``iota_view``'s ``iterator``'s binary ``operator+`` should be improved",✅ +`3581 `__,"The range constructor makes ``basic_string_view`` not trivially move constructible",✅ +`3589 `__,"The ``const`` lvalue reference overload of ``get`` for ``subrange`` does not constrain ``I`` to be ``copyable`` when ``N == 0``",✅ +`3590 `__,"``split_view::base() const &`` is overconstrained","Not started" +`3591 `__,"``lazy_split_view::inner-iterator::base() &&`` invalidates outer iterators","Not started" +`3592 `__,"``lazy_split_view`` needs to check the simpleness of Pattern","Not started" +`3593 `__,"Several iterators' ``base() const &`` and ``lazy_split_view::outer-iterator::value_type::end()`` missing ``noexcept``","Not started" +`3595 `__,"Exposition-only classes proxy and postfix-proxy for ``common_iterator`` should be fully ``constexpr``",✅ +"`3601 `__","common_iterator's postfix-proxy needs ``indirectly_readable`` ","Not started" +"`3607 `__","``contiguous_iterator`` should not be allowed to have custom ``iter_move`` and ``iter_swap`` behavior","|Nothing to do|" +"`3610 `__","``iota_view::size`` sometimes rejects integer-class types","Not started" +"`3618 `__","Unnecessary ``iter_move`` for ``transform_view::iterator`` ","Not started" +"`3643 `__","Missing ``constexpr`` in ``std::counted_iterator`` ","Not started" +"`3660 `__","``iterator_traits::pointer`` should conform to §[iterator.traits]",✅ +"`3564 `__","``transform_view::iterator::value_type`` and ``iterator_category`` should use ``const F&``","Not started" +"`3670 `__","``Cpp17InputIterators`` don't have integer-class difference types","Not started" +"`3672 `__","``common_iterator::operator->()`` should return by value","Not started" +"`3692 `__","``zip_view::iterator``'s ``operator<=>`` is overconstrained","Not started" +"`3702 `__","Should ``zip_transform_view::iterator`` remove ``operator<``","Not started" +"`3707 `__","chunk_view::outer-iterator::value_type::size should return unsigned type","Not started" +"`3708 `__","``take_while_view::sentinel``'s conversion constructor should move",✅ +"`3710 `__","The ``end`` of ``chunk_view`` for input ranges can be ``const``","Not started" +"`3711 `__","Missing preconditions for slide_view constructor","Not started" +"`3712 `__","``chunk_view`` and ``slide_view`` should not be ``default_initializable``","Not started" +"`3715 `__","``view_interface::empty`` is overconstrained","Not started" +"`3719 `__","Directory iterators should be usable with default sentinel","Not started" diff --git a/libcxx/docs/Status/RangesMajorFeatures.csv b/libcxx/docs/Status/RangesMajorFeatures.csv new file mode 100644 --- /dev/null +++ b/libcxx/docs/Status/RangesMajorFeatures.csv @@ -0,0 +1,4 @@ +Standard,Name,Assignee,CL,Status +C++23,`[``ranges::to``] `_,Unassigned,No patch yet,Not started +C++23,`[Pipe support for user-defined range adaptors] `_,Unassigned,No patch yet,Not started +C++23,`[Formatting Ranges] `_,Unassigned,No patch yet,Not started diff --git a/libcxx/docs/Status/RangesPapers.csv b/libcxx/docs/Status/RangesPapers.csv new file mode 100644 --- /dev/null +++ b/libcxx/docs/Status/RangesPapers.csv @@ -0,0 +1,62 @@ +"Number","Name","Status" +"`P0896R4 `__","The One Ranges Proposal",✅ +"`P1252R2 `__","Ranges Design Cleanup",✅ +"`P1035R7 `__","Input Range Adaptors (mostly implemented, TODO: elements_view)","|In Progress|" +"`P1207R4 `__","Movability of Single-pass Iterators",✅ +"`P1474R1 `__","Helpful pointers for ContiguousIterator",✅ +"`P1522R1 `__","Iterator Difference Type and Integer Overflow",✅ +"`P1523R1 `__","Views and Size Types",✅ +"`P1638R1 `__","basic_istream_view::iterator should not be copyable",✅ +"`P1754R1 `__","Rename concepts to standard_case for C++20, while we still can","|In Progress|" +"`P1391R4 `__","Range constructor for std::string_view",✅ +"`P1394R4 `__","Range constructor for std::span",✅ +"`P1456R1 `__","Move-only views",✅ +"`P1716R3 `__","ranges compare algorithm are over-constrained",✅ +"`P1862R1 `__","Ranges adaptors for non-copyable iterators","* *" +"`P1870R1 `__","forwarding-range is too subtle",✅ +"`P1871R1 `__","Concept traits should be named after concepts",✅ +"`P1878R1 `__","Constraining Readable Types",✅ +"`P1243R4 `__","Rangify New Algorithms",✅ +"`P1739R4 `__","Avoid template bloat for safe_ranges in combination with ""subrange-y"" view adaptors",✅ +"`P1963R0 `__","Fixing US 313","* *" +"`P1970R2 `__","Consistency for size() functions: Add ranges::ssize",✅ +"`P1976R2 `__","Fixed-size span construction from dynamic range",✅ +"`P1983R0 `__","Wording for GB301, US296, US292, US291, and US283",✅ +"`P1994R1 `__","elements_view needs its own sentinel","* *" +"`P2091R0 `__","Issues with range access CPOs",✅ +"`P2106R0 `__","Alternative wording for GB315 and GB316",✅ +"`P2325R3 `__","Views should not be required to be default constructible","|In progress|" +"`P2210R2 `__",Superior String Splitting,"|In progress|" +"`P2281R1 `__",Clarifying range adaptor objects,✅ +"`P2328R1 `__",join_view should join all views of ranges,"Not started" +"`P2367R0 `__",Remove misuses of list-initialization from Clause 24,"Not started" +"`P2415R2 `__","What is a ``view``",✅ +"`P2432R1 `__","Fix ``istream_view``",✅ +"","","" +"`P2017R1 `__","Conditionally borrowed ranges","Not started" +"`P2259R1 `__","Repairing input range adaptors and counted_iterator","Not started" +"`P1425R4 `__","Iterators pair constructors for stack and queue",✅ +"`P1659R3 `__","starts_with and ends_with","Not started" +"`P1989R2 `__","Range constructor for std::string_view",✅ +"`P2321R2 `__","``zip``","|In Progress|" +"`P1206R7 `__","``ranges::to``: A function to convert any range to a container","Not started" +"`P2387R3 `__","Pipe support for user-defined range adaptors","Not started" +"`P2440R1 `__","``ranges::iota``, ``ranges::shift_left`` and ``ranges::shift_right``","Not started" +"`P2441R2 `__","``views::join_with``","Not started" +"`P2442R1 `__","Windowing range adaptors: ``views::chunk`` and ``views::slide``","Not started" +"`P2443R1 `__","``views::chunk_by``","Not started" +"`P1223R5 `__","``ranges::find_last()``, ``ranges::find_last_if()``, and ``ranges::find_last_if_not()``","Not started" +"`P1899R3 `__","``stride_view``","Not started" +"`P2278R4 `__","``cbegin`` should always return a constant iterator","Not started" +"`P2286R8 `__","Formatting Ranges","Not started" +"`P2302R4 `__","``std::ranges::contains``","Not started" +"`P2322R6 `__","``ranges::fold``","Not started" +"`P2374R4 `__","``views::cartesian_product``","Not started" +"`P2408R5 `__","Ranges iterators as inputs to non-Ranges algorithms","Not started" +"`P2446R2 `__","``views::as_rvalue``","Not started" +"`P2474R2 `__","``views::repeat``","Not started" +"`P2494R2 `__","Relaxing range adaptors to allow for move only types","Not started" +"`P2499R0 `__","``string_view`` range constructor should be ``explicit``",✅ +"`P2502R2 `__","``std::generator``: Synchronous Coroutine Generator for Ranges","Not started" +"`P2520R0 `__","``move_iterator`` should be a random access iterator","Not started" +"`P2540R1 `__","Empty Product for certain Views","Not started"