Files
clang-p2996/libcxx/docs/Status/Cxx2bPapers.csv
Christian Trott fcaccf817d [libcxx] Add mdspan/extents
This patch adds std::extents. extents is one of the core classes used by std::mdspan. It describes a multi-dimensional index space with a mix of compile time and runtime sizes. Furthermore, it is templated on the index type used to describe the multi-dimensional index space.

The class is designed to be highly optimizable in performance critical code sections, and is fully useable in constant expressions contexts.

Testing of this class tends to be somewhat combinatorical, due to the large number of possible corner cases involved in situations where we have both runtime and compile time extents. To add to this, the class is designed to be interoperable (in particular constructible) from arguments which only need to be convertible to the index_type, but are otherwise arbitrary user types. For a larger discussion on the design of this class refer to: https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/p0009r18.html

Co-authored-by: Damien L-G <dalg24@gmail.com>

Reviewed By: ldionne, #libc

Spies: libcxx-commits, H-G-Hristov, tschuett, philnik, arichardson, Mordante, crtrott

Differential Revision: https://reviews.llvm.org/D148067
2023-05-16 14:30:36 -07:00

14 KiB

1Paper #GroupPaper NameMeetingStatusFirst released versionLabels
2`P0881R7 <https://wg21.link/P0881R7>`__LWGA Proposal to add stacktrace libraryAutumn 2020
3`P0943R6 <https://wg21.link/P0943R6>`__LWGSupport C atomics in C++Autumn 2020|Complete|15.0
4`P1048R1 <https://wg21.link/P1048R1>`__LWGA proposal for a type trait to detect scoped enumerationsAutumn 2020|Complete|12.0
5`P1679R3 <https://wg21.link/P1679R3>`__LWGstring contains functionAutumn 2020|Complete|12.0
6
7`P1682R3 <https://wg21.link/P1682R3>`__LWGstd::to_underlying for enumerationsFebruary 2021|Complete|13.0
8`P2017R1 <https://wg21.link/P2017R1>`__LWGConditionally borrowed rangesFebruary 2021|ranges|
9`P2160R1 <https://wg21.link/P2160R1>`__LWGLocks lock lockablesFebruary 2021
10`P2162R2 <https://wg21.link/P2162R2>`__LWGInheriting from std::variantFebruary 2021|Complete|13.0
11`P2212R2 <https://wg21.link/P2212R2>`__LWGRelax Requirements for time_point::clockFebruary 2021
12`P2259R1 <https://wg21.link/P2259R1>`__LWGRepairing input range adaptors and counted_iteratorFebruary 2021|ranges|
13
14`P0401R6 <https://wg21.link/P0401R6>`__LWGProviding size feedback in the Allocator interfaceJune 2021|Complete|15.0
15`P0448R4 <https://wg21.link/P0448R4>`__LWGA strstream replacement using span<charT> as bufferJune 2021
16`P1132R8 <https://wg21.link/P1132R8>`__LWGout_ptr - a scalable output pointer abstractionJune 2021
17`P1328R1 <https://wg21.link/P1328R1>`__LWGMaking std::type_info::operator== constexprJune 2021|Complete|17.0
18`P1425R4 <https://wg21.link/P1425R4>`__LWGIterators pair constructors for stack and queueJune 2021|Complete|14.0|ranges|
19`P1518R2 <https://wg21.link/P1518R2>`__LWGStop overconstraining allocators in container deduction guidesJune 2021|Complete|13.0
20`P1659R3 <https://wg21.link/P1659R3>`__LWGstarts_with and ends_withJune 2021|ranges|
21`P1951R1 <https://wg21.link/P1951R1>`__LWGDefault Arguments for pair Forwarding ConstructorJune 2021|Complete|14.0
22`P1989R2 <https://wg21.link/P1989R2>`__LWGRange constructor for std::string_viewJune 2021|Complete|14.0|ranges|
23`P2136R3 <https://wg21.link/P2136R3>`__LWGinvoke_rJune 2021|Complete|17.0
24`P2166R1 <https://wg21.link/P2166R1>`__LWGA Proposal to Prohibit std::basic_string and std::basic_string_view construction from nullptrJune 2021|Complete|13.0
25
26`P0288R9 <https://wg21.link/P0288R9>`__LWG``any_invocable``October 2021
27`P0798R8 <https://wg21.link/P0798R8>`__LWGMonadic operations for ``std::optional``October 2021|Complete|14.0
28`P0849R8 <https://wg21.link/P0849R8>`__LWG``auto(x)``: ``DECAY_COPY`` in the languageOctober 2021|Complete|14.0
29`P1072R10 <https://wg21.link/P1072R10>`__LWG``basic_string::resize_and_overwrite``October 2021|Complete|14.0
30`P1147R1 <https://wg21.link/P1147R1>`__LWGPrinting ``volatile`` PointersOctober 2021|Complete|14.0
31`P1272R4 <https://wg21.link/P1272R4>`__LWGByteswapping for fun&&nufOctober 2021|Complete|14.0
32`P1675R2 <https://wg21.link/P1675R2>`__LWG``rethrow_exception`` must be allowed to copyOctober 2021
33`P2077R3 <https://wg21.link/P2077R3>`__LWGHeterogeneous erasure overloads for associative containersOctober 2021
34`P2251R1 <https://wg21.link/P2251R1>`__LWGRequire ``span`` & ``basic_string_view`` to be Trivially CopyableOctober 2021|Complete|14.0
35`P2301R1 <https://wg21.link/P2301R1>`__LWGAdd a ``pmr`` alias for ``std::stacktrace``October 2021
36`P2321R2 <https://wg21.link/P2321R2>`__LWG``zip``October 2021|In Progress||ranges|
37`P2340R1 <https://wg21.link/P2340R1>`__LWGClarifying the status of the 'C headers'October 2021
38`P2393R1 <https://wg21.link/P2393R1>`__LWGCleaning up ``integer``-class typesOctober 2021
39`P2401R0 <https://wg21.link/P2401R0>`__LWGAdd a conditional ``noexcept`` specification to ``std::exchange``October 2021|Complete|14.0
40
41`P0323R12 <https://wg21.link/P0323R12>`__LWG``std::expected``February 2022|Complete|16.0
42`P0533R9 <https://wg21.link/P0533R9>`__LWG``constexpr`` for ``<cmath>`` and ``<cstdlib>``February 2022|In progress| [#note-P0533R9]_
43`P0627R6 <https://wg21.link/P0627R6>`__LWGFunction to mark unreachable codeFebruary 2022|Complete|15.0
44`P1206R7 <https://wg21.link/P1206R7>`__LWG``ranges::to``: A function to convert any range to a containerFebruary 2022|In Progress||ranges|
45`P1413R3 <https://wg21.link/P1413R3>`__LWGDeprecate ``std::aligned_storage`` and ``std::aligned_union``February 2022|Complete| [#note-P1413R3]_
46`P2255R2 <https://wg21.link/P2255R2>`__LWGA type trait to detect reference binding to temporaryFebruary 2022
47`P2273R3 <https://wg21.link/P2273R3>`__LWGMaking ``std::unique_ptr`` constexprFebruary 2022|Complete|16.0
48`P2387R3 <https://wg21.link/P2387R3>`__LWGPipe support for user-defined range adaptorsFebruary 2022|ranges|
49`P2440R1 <https://wg21.link/P2440R1>`__LWG``ranges::iota``, ``ranges::shift_left`` and ``ranges::shift_right``February 2022|ranges|
50`P2441R2 <https://wg21.link/P2441R2>`__LWG``views::join_with``February 2022|ranges|
51`P2442R1 <https://wg21.link/P2442R1>`__LWGWindowing range adaptors: ``views::chunk`` and ``views::slide``February 2022|ranges|
52`P2443R1 <https://wg21.link/P2443R1>`__LWG``views::chunk_by``February 2022|ranges|
53
54`P0009R18 <https://wg21.link/P0009R18>`__LWGmdspan: A Non-Owning Multidimensional Array ReferenceJuly 2022|In progress|
55`P0429R9 <https://wg21.link/P0429R9>`__LWGA Standard ``flat_map``July 2022
56`P1169R4 <https://wg21.link/P1169R4>`__LWG``static operator()``July 2022|Complete|16.0
57`P1222R4 <https://wg21.link/P1222R4>`__LWGA Standard ``flat_set``July 2022
58`P1223R5 <https://wg21.link/P1223R5>`__LWG``ranges::find_last()``, ``ranges::find_last_if()``, and ``ranges::find_last_if_not()``July 2022|ranges|
59`P1467R9 <https://wg21.link/P1467R9>`__LWGExtended ``floating-point`` types and standard namesJuly 2022
60`P1642R11 <https://wg21.link/P1642R11>`__LWGFreestanding ``[utilities]``, ``[ranges]``, and ``[iterators]``July 2022
61`P1899R3 <https://wg21.link/P1899R3>`__LWG``stride_view``July 2022|ranges|
62`P2093R14 <https://wg21.link/P2093R14>`__LWGFormatted outputJuly 2022
63`P2165R4 <https://wg21.link/P2165R4>`__LWGCompatibility between ``tuple``, ``pair`` and ``tuple-like`` objectsJuly 2022
64`P2278R4 <https://wg21.link/P2278R4>`__LWG``cbegin`` should always return a constant iteratorJuly 2022|ranges|
65`P2286R8 <https://wg21.link/P2286R8>`__LWGFormatting RangesJuly 2022|Complete|16.0|format| |ranges|
66`P2291R3 <https://wg21.link/P2291R3>`__LWGAdd Constexpr Modifiers to Functions ``to_chars`` and ``from_chars`` for Integral Types in ``<charconv>`` HeaderJuly 2022|Complete|16.0
67`P2302R4 <https://wg21.link/P2302R4>`__LWG``std::ranges::contains``July 2022|ranges|
68`P2322R6 <https://wg21.link/P2322R6>`__LWG``ranges::fold``July 2022|ranges|
69`P2374R4 <https://wg21.link/P2374R4>`__LWG``views::cartesian_product``July 2022|ranges|
70`P2404R3 <https://wg21.link/P2404R3>`__LWGMove-only types for ``equality_comparable_with``, ``totally_ordered_with``, and ``three_way_comparable_with``July 2022
71`P2408R5 <https://wg21.link/P2408R5>`__LWGRanges iterators as inputs to non-Ranges algorithmsJuly 2022|ranges|
72`P2417R2 <https://wg21.link/P2417R2>`__LWGA more ``constexpr`` ``bitset``July 2022|Complete|16.0
73`P2419R2 <https://wg21.link/P2419R2>`__LWGClarify handling of encodings in localized formatting of chrono typesJuly 2022
74`P2438R2 <https://wg21.link/P2438R2>`__LWG``std::string::substr() &&``July 2022|Complete|16.0
75`P2445R1 <https://wg21.link/P2445R1>`__LWG``forward_like``July 2022|Complete|16.0
76`P2446R2 <https://wg21.link/P2446R2>`__LWG``views::as_rvalue``July 2022|Complete|16.0|ranges|
77`P2460R2 <https://wg21.link/P2460R2>`__LWGRelax requirements on ``wchar_t`` to match existing practicesJuly 2022
78`P2465R3 <https://wg21.link/P2465R3>`__LWGStandard Library Modules ``std`` and ``std.compat``July 2022
79`P2467R1 <https://wg21.link/P2467R1>`__LWGSupport exclusive mode for ``fstreams``July 2022
80`P2474R2 <https://wg21.link/P2474R2>`__LWG``views::repeat``July 2022|ranges|
81`P2494R2 <https://wg21.link/P2494R2>`__LWGRelaxing range adaptors to allow for move only typesJuly 2022|ranges|
82`P2499R0 <https://wg21.link/P2499R0>`__LWG``string_view`` range constructor should be ``explicit``July 2022|Complete|16.0|ranges|
83`P2502R2 <https://wg21.link/P2502R2>`__LWG``std::generator``: Synchronous Coroutine Generator for RangesJuly 2022|ranges|
84`P2508R1 <https://wg21.link/P2508R1>`__LWGExposing ``std::basic-format-string``July 2022|Complete|15.0
85`P2513R4 <https://wg21.link/P2513R4>`__LWG``char8_t`` Compatibility and Portability FixesJuly 2022
86`P2517R1 <https://wg21.link/P2517R1>`__LWGAdd a conditional ``noexcept`` specification to ``std::apply``July 2022
87`P2520R0 <https://wg21.link/P2520R0>`__LWG``move_iterator`` should be a random access iteratorJuly 2022|Complete| [#note-P2520R0]_17.0|ranges|
88`P2540R1 <https://wg21.link/P2540R1>`__LWGEmpty Product for certain ViewsJuly 2022|ranges|
89`P2549R1 <https://wg21.link/P2549R1>`__LWG``std::unexpected`` should have ``error()`` as member accessorJuly 2022|Complete|16.0
90`P2553R1 <https://wg21.link/P2553R1>`__LWGMake ``mdspan`` ``size_type`` controllableJuly 2022
91`P2554R0 <https://wg21.link/P2554R0>`__LWGC-Array Interoperability of MDSpanJuly 2022
92`P2585R0 <https://wg21.link/P2585R0>`__LWGImproving default container formattingJuly 2022|Complete|17.0
93`P2590R2 <https://wg21.link/P2590R2>`__LWGExplicit lifetime managementJuly 2022
94`P2599R2 <https://wg21.link/P2599R2>`__LWG``mdspan::size_type`` should be ``index_type``July 2022
95`P2604R0 <https://wg21.link/P2604R0>`__LWGmdspan: rename pointer and contiguousJuly 2022
96`P2613R1 <https://wg21.link/P2613R1>`__LWGAdd the missing ``empty`` to ``mdspan``July 2022
97
98`P1202R5 <https://wg21.link/P1202R5>`__LWGAsymmetric FencesNovember 2022|concurrency TS|
99`P1264R2 <https://wg21.link/P1264R2>`__LWGRevising the wording of ``stream`` input operationsNovember 2022|Complete|9.0
100`P1478R8 <https://wg21.link/P1478R8>`__LWG``Byte-wise`` ``atomic`` ``memcpy``November 2022|concurrency TS|
101`P2167R3 <https://wg21.link/P2167R3>`__LWGImproved Proposed Wording for LWG 2114November 2022
102`P2396R1 <https://wg21.link/P2396R1>`__LWGConcurrency TS 2 fixes November 2022|concurrency TS|
103`P2505R5 <https://wg21.link/P2505R5>`__LWGMonadic Functions for ``std::expected``November 2022
104`P2539R4 <https://wg21.link/P2539R4>`__LWGShould the output of ``std::print`` to a terminal be synchronized with the underlying stream?November 2022|format|
105`P2602R2 <https://wg21.link/P2602R2>`__LWGPoison Pills are Too ToxicNovember 2022|ranges|
106`P2708R1 <https://wg21.link/P2708R1>`__LWGNo Further Fundamentals TSesNovember 2022|Nothing to do|
107
108`P0290R4 <https://wg21.link/P0290R4>`__LWG``apply()`` for ``synchronized_value<T>``February 2023|concurrency TS|
109`P2770R0 <https://wg21.link/P2770R0>`__LWGStashing stashing ``iterators`` for proper flatteningFebruary 2023|ranges|
110`P2164R9 <https://wg21.link/P2164R9>`__LWG``views::enumerate``February 2023|ranges|
111`P2711R1 <https://wg21.link/P2711R1>`__LWGMaking multi-param constructors of ``views`` ``explicit``February 2023|Partial| [#note-P2711R1]_|ranges|
112`P2609R3 <https://wg21.link/P2609R3>`__LWGRelaxing Ranges Just A SmidgeFebruary 2023|ranges|
113`P2713R1 <https://wg21.link/P2713R1>`__LWGEscaping improvements in ``std::format``February 2023|format|
114`P2675R1 <https://wg21.link/P2675R1>`__LWG``format``'s width estimation is too approximate and not forward compatibleFebruary 2023|Complete|17.0|format|
115`P2572R1 <https://wg21.link/P2572R1>`__LWG``std::format`` fill character allowancesFebruary 2023|format|
116`P2693R1 <https://wg21.link/P2693R1>`__LWGFormatting ``thread::id`` and ``stacktrace``February 2023|Partial| [#note-P2693R1]_|format|
117`P2679R2 <https://wg21.link/P2679R2>`__LWGFixing ``std::start_lifetime_as`` for arraysFebruary 2023
118`P2674R1 <https://wg21.link/P2674R1>`__LWGA trait for implicit lifetime typesFebruary 2023
119`P2655R3 <https://wg21.link/P2655R3>`__LWG``common_reference_t`` of ``reference_wrapper`` Should Be a Reference TypeFebruary 2023
120`P2652R2 <https://wg21.link/P2652R2>`__LWGDisallow User Specialization of ``allocator_traits``February 2023
121`P2787R1 <https://wg21.link/P2787R1>`__LWG``pmr::generator`` - Promise Types are not ValuesFebruary 2023
122`P2614R2 <https://wg21.link/P2614R2>`__LWGDeprecate ``numeric_limits::has_denorm``February 2023
123`P2588R3 <https://wg21.link/P2588R3>`__LWG``barrier``’s phase completion guaranteesFebruary 2023
124`P2763R1 <https://wg21.link/P2763R1>`__LWG``layout_stride`` static extents default constructor fixFebruary 2023
125`P2736R2 <https://wg21.link/P2736R2>`__CWGReferencing The Unicode StandardFebruary 2023|format|