[libc++][docs] Add status docs for ranges.

The added documents have two tables: 1 containing links to issues and papers related to ranges. And the other contains most of the sections from the One Ranges Proposal, with their dependencies linked. This will allow us to assign work that can be done in parallel.

Differential Revision: https://reviews.llvm.org/D100393
This commit is contained in:
Zoe Carver 2021-04-13 17:56:55 -07:00
parent 0148bf53f0
commit 0f0149b8d3
4 changed files with 172 additions and 0 deletions

View File

@ -0,0 +1,61 @@
Section,Description,Dependencies,Asignee,Patch,Complete
[concepts],"Normally this would be more fine-grained, but its already been implemented.",,Christopher Di Bella,,✅
[tuple.helper],Update <tuple> includes.,,,,
[function.objects],"Comparison functions: equal_to, less, etc.",[concepts],Zoe Carver,D100429,
[memory.syn],Add specializations for uninitialized_* and destroy_*. ,"[concepts], [readable.traits]: iter_value_t",,,
[readable.traits]: indirectly_readable_traits,indirectly_readable_traits only. ,[concepts],Christopher Di Bella,D99461,
[iterator.traits],Mainly updates to iterator_traits.,"[readable.traits]: indirectly_readable_traits, [concepts]",Christopher Di Bella,"D99854, D99855",
[readable.traits]: iter_value_t,Finish implementing readable.traits.,"[readable.traits]: indirectly_readable_traits, [concepts], [iterator.traits]",Christopher Di Bella,D99863,
[specialized.algorithms],NOT FINISHED,NOT FINISHED,,,
[strings],Adds begin/end and updates const_iterator.,[iterator.concepts],,,
[views.span],Same as [strings],[iterator.concepts],,,
[incrementable.traits],,[concepts],Christopher Di Bella,"D99141, D99863",1/2
[iterator.cust.move],Implement iter_move.,,Christopher Di Bella,D99873,
[iterator.cust.swap],Implement iter_swap.,"[concepts], [readable.traits]: iter_value_t",,,
[iterator.concepts],"indirectly_­readable, indirectly_writable, weakly_incrementable, incrementable, input_or_output_iterator, sentinel_for, sized_sentinel_for, input_iterator, output_iterator, forward_iterator, bidirectional_iterator, random_access_iterator, and contiguous_iterator.","[concepts], [readable.traits]: iter_value_t, [iterator.traits]",Christopher Di Bella,"indirectly_readable: D100073
indirectly_wriatable: D100078 weakly_incrementable, incrementable: D100080 input_or_output_iterator, sentinel_for: D100160
input_iterator: D100271
forward_iterator: D100275
bidirectional_iterator: D100278",
[indirectcallable.indirectinvocable],"indirectly_unary_invocable, indirectly_regular_unary_invocable, indirectly_unary_predicate, indirectly_binary_predicate, indirectly_equivalence_relation, and indirectly_strict_weak_order.","[concepts], [readable.traits]: iter_value_t, [iterator.traits]",,,
[projected],,[iterator.concepts],,,
[common.alg.req]: pt. 1,"indirectly_movable, indirectly_movable_sorable, indirectly_copyable, and indirectly_copyable_storable.",[iterator.concepts],,,
[common.alg.req]: pt. 2,indirectly_swappable,"[iterator.concepts], [iterator.cust.swap]",,,
[common.alg.req]: pt. 3,indirectly_comparable,[projected],,,
[common.alg.req]: pt. 4,"Note: could be done with pt. 1. … permutable, mergeable, and sortable",[iterator.concepts],,,
[std.iterator.tags],,[iterator.traits],,,
[range.iterator.opearations.advance],ranges::advance,[iterator.concepts],,,
[range.iterator.opearations.distance],ranges::distance,"[iterator.concepts], [range.range]",,,
[range.iterator.opearations.next],ranges::next,[iterator.concepts],,,
[range.iterator.opearations.prev],ranges::prev,[iterator.concepts],,,
[predef.iterators],Updates to predefined iterators.,"[iterator.concepts], [iterator.cust.swap], [iterator.cust.move]",,,
[move.sentinel],,[concepts] … Note: for testing it may be beneficial to have completed [predef.iterators]. ,,,
[common.iterator],,"[iterator.concepts], [iterator.cust.swap], [iterator.cust.move]",,,
[default.sentinels],The empty std::default_sentinel_t.,,,,
[counted.iterator],,"[iterator.concepts], [iterator.cust.swap], [iterator.cust.move], [default.sentinels]",,,
[stream.iterators],,[default.sentinels],,,
[ranges.syn]: pt. 1,All the stuff not specified elsewhere. ,"[range.access], [iterator.concepts], [range.all], [range.subrange], unreachable, [range.empty]",,,
[ranges.syn]: pt. 2,"iterator_t, sentinel_t, and safe_iterator_t",[range.access],Christopher Di Bella,"D100255, D100269",
[range.access],"ranges::begin, end, cbegin, cend, rbegin, rend, crbegin, and crend",[iterator.concepts],Christopher Di Bella,D100255,
[ranges.primitives],"size, empty, data, and cdata",[iterator.concepts],,,
[range.range],,[range.access],,,
[range.sized],,"[range.primitives], [range.range]",,,
[range.view],View and enable_view,[range.range],,,
[range.refinements],"OutputRange, InputRange, ForwardRange, BidirectionalRange, RandomAccessRange, ContiguousRange, CommonRange, ViewableRange","[ranges.syn]: pt. 2, [range.range]",Christopher Di Bella,"input_range: D100271
forward_range: D100275
bidirectional_range: D100278",
[view.interface],[range.utility.helpers] and view_interface,"[ranges.syn]: pt. 2, [range.view], [range.iterator.opearations.prev], [range.refinements]",,,
[range.subrange],,[view.interface],,,
[range.all],view::all,"[range.subrange], [range.view.ref]",,,
[range.view.ref],ref-view,[view.interface],,,
[range.filter],filter_view,[range.all],,,
[range.transform],transform_view,[range.all],,,
[range.iota],iota_view,[range.all],,,
[range.take],take_view,[range.all],,,
[range.join],join_view,[range.all],,,
[range.empty],empty_view,[view.interface],,,
[range.single],single_view,[view.interface],,,
[range.split],split_view,[range.all],,,
[range.counted],view::counted,[range.subrange],,,
[range.common],common_view,[range.all],,,
[range.reverse],reverse_view,[range.all],,,
1 Section Description Dependencies Asignee Patch Complete
2 [concepts] Normally this would be more fine-grained, but it’s already been implemented. Christopher Di Bella
3 [tuple.helper] Update <tuple> includes.
4 [function.objects] Comparison functions: equal_to, less, etc. [concepts] Zoe Carver D100429
5 [memory.syn] Add specializations for uninitialized_* and destroy_*. [concepts], [readable.traits]: iter_value_t
6 [readable.traits]: indirectly_readable_traits indirectly_readable_traits only. [concepts] Christopher Di Bella D99461
7 [iterator.traits] Mainly updates to iterator_traits. [readable.traits]: indirectly_readable_traits, [concepts] Christopher Di Bella D99854, D99855
8 [readable.traits]: iter_value_t Finish implementing readable.traits. [readable.traits]: indirectly_readable_traits, [concepts], [iterator.traits] Christopher Di Bella D99863
9 [specialized.algorithms] NOT FINISHED NOT FINISHED
10 [strings] Adds begin/end and updates const_iterator. [iterator.concepts]
11 [views.span] Same as [strings] [iterator.concepts]
12 [incrementable.traits] [concepts] Christopher Di Bella D99141, D99863 1/2
13 [iterator.cust.move] Implement iter_move. Christopher Di Bella D99873
14 [iterator.cust.swap] Implement iter_swap. [concepts], [readable.traits]: iter_value_t
15 [iterator.concepts] indirectly_­readable, indirectly_writable, weakly_incrementable, incrementable, input_or_output_iterator, sentinel_for, sized_sentinel_for, input_iterator, output_iterator, forward_iterator, bidirectional_iterator, random_access_iterator, and contiguous_iterator. [concepts], [readable.traits]: iter_value_t, [iterator.traits] Christopher Di Bella indirectly_readable: D100073 indirectly_wriatable: D100078 weakly_incrementable, incrementable: D100080 input_or_output_iterator, sentinel_for: D100160 input_iterator: D100271 forward_iterator: D100275 bidirectional_iterator: D100278
16 [indirectcallable.indirectinvocable] indirectly_unary_invocable, indirectly_regular_unary_invocable, indirectly_unary_predicate, indirectly_binary_predicate, indirectly_equivalence_relation, and indirectly_strict_weak_order. [concepts], [readable.traits]: iter_value_t, [iterator.traits]
17 [projected] [iterator.concepts]
18 [common.alg.req]: pt. 1 indirectly_movable, indirectly_movable_sorable, indirectly_copyable, and indirectly_copyable_storable. [iterator.concepts]
19 [common.alg.req]: pt. 2 indirectly_swappable [iterator.concepts], [iterator.cust.swap]
20 [common.alg.req]: pt. 3 indirectly_comparable [projected]
21 [common.alg.req]: pt. 4 Note: could be done with pt. 1. … permutable, mergeable, and sortable [iterator.concepts]
22 [std.iterator.tags] [iterator.traits]
23 [range.iterator.opearations.advance] ranges::advance [iterator.concepts]
24 [range.iterator.opearations.distance] ranges::distance [iterator.concepts], [range.range]
25 [range.iterator.opearations.next] ranges::next [iterator.concepts]
26 [range.iterator.opearations.prev] ranges::prev [iterator.concepts]
27 [predef.iterators] Updates to predefined iterators. [iterator.concepts], [iterator.cust.swap], [iterator.cust.move]
28 [move.sentinel] [concepts] … Note: for testing it may be beneficial to have completed [predef.iterators].
29 [common.iterator] [iterator.concepts], [iterator.cust.swap], [iterator.cust.move]
30 [default.sentinels] The empty std::default_sentinel_t.
31 [counted.iterator] [iterator.concepts], [iterator.cust.swap], [iterator.cust.move], [default.sentinels]
32 [stream.iterators] [default.sentinels]
33 [ranges.syn]: pt. 1 All the stuff not specified elsewhere. [range.access], [iterator.concepts], [range.all], [range.subrange], unreachable, [range.empty]
34 [ranges.syn]: pt. 2 iterator_t, sentinel_t, and safe_iterator_t [range.access] Christopher Di Bella D100255, D100269
35 [range.access] ranges::begin, end, cbegin, cend, rbegin, rend, crbegin, and crend [iterator.concepts] Christopher Di Bella D100255
36 [ranges.primitives] size, empty, data, and cdata [iterator.concepts]
37 [range.range] [range.access]
38 [range.sized] [range.primitives], [range.range]
39 [range.view] View and enable_view [range.range]
40 [range.refinements] OutputRange, InputRange, ForwardRange, BidirectionalRange, RandomAccessRange, ContiguousRange, CommonRange, ViewableRange [ranges.syn]: pt. 2, [range.range] Christopher Di Bella input_range: D100271 forward_range: D100275 bidirectional_range: D100278
41 [view.interface] [range.utility.helpers] and view_interface [ranges.syn]: pt. 2, [range.view], [range.iterator.opearations.prev], [range.refinements]
42 [range.subrange] [view.interface]
43 [range.all] view::all [range.subrange], [range.view.ref]
44 [range.view.ref] ref-view [view.interface]
45 [range.filter] filter_view [range.all]
46 [range.transform] transform_view [range.all]
47 [range.iota] iota_view [range.all]
48 [range.take] take_view [range.all]
49 [range.join] join_view [range.all]
50 [range.empty] empty_view [view.interface]
51 [range.single] single_view [view.interface]
52 [range.split] split_view [range.all]
53 [range.counted] view::counted [range.subrange]
54 [range.common] common_view [range.all]
55 [range.reverse] reverse_view [range.all]

View File

@ -0,0 +1,59 @@
"Number","Name","Status","Assignee"
`P0896R4 <https://wg21.link/P0896R4>`__,<ranges>,,
`P1035R7 <https://wg21.link/P1035R7>`__,Input Range Adaptors,,
`P1207R4 <https://wg21.link/P1207R4>`__,Movability Of Single-Pass Iterators,,
`P1243R4 <https://wg21.link/P1243R4>`__,Rangify New Algorithms,,
`P1248R1 <https://wg21.link/P1248R1>`__,Fixing Relations,,
`P1252R2 <https://wg21.link/P1252R2>`__,Ranges Design Cleanup,,
`P1391R4 <https://wg21.link/P1391R4>`__,Range Constructor For string_view,,
`P1456R1 <https://wg21.link/P1456R1>`__,Move-Only Views,,
`P1474R1 <https://wg21.link/P1474R1>`__,Helpful Pointers For contiguous_iterator,,
`P1522R1 <https://wg21.link/P1522R1>`__,Iterator Difference Type And Integer Overflow,,
`P1523R1 <https://wg21.link/P1523R1>`__,Views And Size Types,,
`P1638R1 <https://wg21.link/P1638R1>`__,basic_istream_view::iterator Should Not Be Copyable,,
`P1716R3 <https://wg21.link/P1716R3>`__,Range Comparison Algorithms Are Over-Constrained,,
`P1739R4 <https://wg21.link/P1739R4>`__,Avoiding Template Bloat For Ranges,,
`P1862R1 <https://wg21.link/P1862R1>`__,Range Adaptors For Non-Copyable Iterators,,
`P1870R1 <https://wg21.link/P1870R1>`__,safe_range,,
`P1871R1 <https://wg21.link/P1871R1>`__,disable_sized_sentinel_for,,
`P1878R1 <https://wg21.link/P1878R1>`__,Constraining Readable Types,,
`P1970R2 <https://wg21.link/P1970R2>`__,ranges::ssize,,
`P1983R0 <https://wg21.link/P1983R0>`__,Fixing Minor Ranges Issues,,
`P1994R1 <https://wg21.link/P1994R1>`__,elements_view Needs Its Own sentinel,,
`P2091R0 <https://wg21.link/P2091R0>`__,Fixing Issues With Range Access CPOs,,
`P2106R0 <https://wg21.link/P2106R0>`__,Range Algorithm Result Types,,
`LWG-3169 <https://wg21.link/LWG-3169>`__, ranges permutation generators discard useful information,,
`LWG-3173 <https://wg21.link/LWG-3173>`__, Enable CTAD for ref-view,,
`LWG-3179 <https://wg21.link/LWG-3179>`__, subrange should always model Range,,
`LWG-3180 <https://wg21.link/LWG-3180>`__, Inconsistently named return type for ranges::minmax_element,,
`LWG-3183 <https://wg21.link/LWG-3183>`__, Normative permission to specialize Ranges variable templates,,
`LWG-3186 <https://wg21.link/LWG-3186>`__," ranges removal, partition, and partial_sort_copy algorithms discard useful information",,
`LWG-3191 <https://wg21.link/LWG-3191>`__, std::ranges::shuffle synopsis does not match algorithm definition,,
`LWG-3276 <https://wg21.link/LWG-3276>`__, Class split_view::outer_iterator::value_type should inherit from view_interface,,
`LWG-3280 <https://wg21.link/LWG-3280>`__, View converting constructors can cause constraint recursion and are unneeded,,
`LWG-3281 <https://wg21.link/LWG-3281>`__, Conversion from pair-like types to subrange is a silent semantic promotion,,
`LWG-3282 <https://wg21.link/LWG-3282>`__, subrange converting constructor should disallow derived to base conversions,,
`LWG-3286 <https://wg21.link/LWG-3286>`__, ranges::size is not required to be valid after a call to ranges::begin on an input range,,
`LWG-3291 <https://wg21.link/LWG-3291>`__, iota_view::iterator has the wrong iterator_category,,
`LWG-3292 <https://wg21.link/LWG-3292>`__, iota_view is under-constrained,,
`LWG-3299 <https://wg21.link/LWG-3299>`__, Pointers don't need customized iterator behavior,,
`LWG-3301 <https://wg21.link/LWG-3301>`__, transform_view::iterator has incorrect iterator_category,,
`LWG-3302 <https://wg21.link/LWG-3302>`__, Range adaptor objects keys and values are unspecified,,
`LWG-3313 <https://wg21.link/LWG-3313>`__, join_view::iterator::operator-- is incorrectly constrained,,
`LWG-3323 <https://wg21.link/LWG-3323>`__, has-tuple-element helper concept needs convertible_to,,
`LWG-3325 <https://wg21.link/LWG-3325>`__, Constrain return type of transformation function for transform_view,,
`LWG-3335 <https://wg21.link/LWG-3335>`__, range_size_t and views::all_t,,
`LWG-3355 <https://wg21.link/LWG-3355>`__, The memory algorithms should support move-only input iterators introduced by P1207,,
`LWG-3363 <https://wg21.link/LWG-3363>`__, drop_while_view should opt-out of sized_range,,
`LWG-3364 <https://wg21.link/LWG-3364>`__, Initialize data members of ranges and their iterators,,
`LWG-3381 <https://wg21.link/LWG-3381>`__, begin and data must agree for contiguous_range,,
`LWG-3384 <https://wg21.link/LWG-3384>`__, transform_view::sentinel has an incorrect operator-,,
`LWG-3385 <https://wg21.link/LWG-3385>`__, common_iterator is not sufficiently constrained for non-copyable iterators,,
`LWG-3387 <https://wg21.link/LWG-3387>`__, [range.reverse.view] reverse_view<V> unintentionally requires range<const V>,,
`LWG-3388 <https://wg21.link/LWG-3388>`__, view iterator types have ill-formed <=> operators,,
`LWG-3389 <https://wg21.link/LWG-3389>`__, A move-only iterator still does not have a counted_iterator,,
`LWG-3397 <https://wg21.link/LWG-3397>`__, ranges::basic_istream_view::iterator should not provide iterator_category,,
`LWG-3398 <https://wg21.link/LWG-3398>`__, tuple_element_t is also wrong for const subrange,,
`LWG-3474 <https://wg21.link/LWG-3474>`__, Nesting join_views is broken because of CTAD,,
`LWG-3500 <https://wg21.link/LWG-3500>`__, join_view::iterator::operator->() is bogus,,
`LWG-3505 <https://wg21.link/LWG-3505>`__, split_view::outer-iterator::operator++ misspecified,,
1 Number Name Status Assignee
2 `P0896R4 <https://wg21.link/P0896R4>`__ <ranges>
3 `P1035R7 <https://wg21.link/P1035R7>`__ Input Range Adaptors
4 `P1207R4 <https://wg21.link/P1207R4>`__ Movability Of Single-Pass Iterators
5 `P1243R4 <https://wg21.link/P1243R4>`__ Rangify New Algorithms
6 `P1248R1 <https://wg21.link/P1248R1>`__ Fixing Relations
7 `P1252R2 <https://wg21.link/P1252R2>`__ Ranges Design Cleanup
8 `P1391R4 <https://wg21.link/P1391R4>`__ Range Constructor For string_view
9 `P1456R1 <https://wg21.link/P1456R1>`__ Move-Only Views
10 `P1474R1 <https://wg21.link/P1474R1>`__ Helpful Pointers For contiguous_iterator
11 `P1522R1 <https://wg21.link/P1522R1>`__ Iterator Difference Type And Integer Overflow
12 `P1523R1 <https://wg21.link/P1523R1>`__ Views And Size Types
13 `P1638R1 <https://wg21.link/P1638R1>`__ basic_istream_view::iterator Should Not Be Copyable
14 `P1716R3 <https://wg21.link/P1716R3>`__ Range Comparison Algorithms Are Over-Constrained
15 `P1739R4 <https://wg21.link/P1739R4>`__ Avoiding Template Bloat For Ranges
16 `P1862R1 <https://wg21.link/P1862R1>`__ Range Adaptors For Non-Copyable Iterators
17 `P1870R1 <https://wg21.link/P1870R1>`__ safe_range
18 `P1871R1 <https://wg21.link/P1871R1>`__ disable_sized_sentinel_for
19 `P1878R1 <https://wg21.link/P1878R1>`__ Constraining Readable Types
20 `P1970R2 <https://wg21.link/P1970R2>`__ ranges::ssize
21 `P1983R0 <https://wg21.link/P1983R0>`__ Fixing Minor Ranges Issues
22 `P1994R1 <https://wg21.link/P1994R1>`__ elements_view Needs Its Own sentinel
23 `P2091R0 <https://wg21.link/P2091R0>`__ Fixing Issues With Range Access CPOs
24 `P2106R0 <https://wg21.link/P2106R0>`__ Range Algorithm Result Types
25 `LWG-3169 <https://wg21.link/LWG-3169>`__ ranges permutation generators discard useful information
26 `LWG-3173 <https://wg21.link/LWG-3173>`__ Enable CTAD for ref-view
27 `LWG-3179 <https://wg21.link/LWG-3179>`__ subrange should always model Range
28 `LWG-3180 <https://wg21.link/LWG-3180>`__ Inconsistently named return type for ranges::minmax_element
29 `LWG-3183 <https://wg21.link/LWG-3183>`__ Normative permission to specialize Ranges variable templates
30 `LWG-3186 <https://wg21.link/LWG-3186>`__ ranges removal, partition, and partial_sort_copy algorithms discard useful information
31 `LWG-3191 <https://wg21.link/LWG-3191>`__ std::ranges::shuffle synopsis does not match algorithm definition
32 `LWG-3276 <https://wg21.link/LWG-3276>`__ Class split_view::outer_iterator::value_type should inherit from view_interface
33 `LWG-3280 <https://wg21.link/LWG-3280>`__ View converting constructors can cause constraint recursion and are unneeded
34 `LWG-3281 <https://wg21.link/LWG-3281>`__ Conversion from pair-like types to subrange is a silent semantic promotion
35 `LWG-3282 <https://wg21.link/LWG-3282>`__ subrange converting constructor should disallow derived to base conversions
36 `LWG-3286 <https://wg21.link/LWG-3286>`__ ranges::size is not required to be valid after a call to ranges::begin on an input range
37 `LWG-3291 <https://wg21.link/LWG-3291>`__ iota_view::iterator has the wrong iterator_category
38 `LWG-3292 <https://wg21.link/LWG-3292>`__ iota_view is under-constrained
39 `LWG-3299 <https://wg21.link/LWG-3299>`__ Pointers don't need customized iterator behavior
40 `LWG-3301 <https://wg21.link/LWG-3301>`__ transform_view::iterator has incorrect iterator_category
41 `LWG-3302 <https://wg21.link/LWG-3302>`__ Range adaptor objects keys and values are unspecified
42 `LWG-3313 <https://wg21.link/LWG-3313>`__ join_view::iterator::operator-- is incorrectly constrained
43 `LWG-3323 <https://wg21.link/LWG-3323>`__ has-tuple-element helper concept needs convertible_to
44 `LWG-3325 <https://wg21.link/LWG-3325>`__ Constrain return type of transformation function for transform_view
45 `LWG-3335 <https://wg21.link/LWG-3335>`__ range_size_t and views::all_t
46 `LWG-3355 <https://wg21.link/LWG-3355>`__ The memory algorithms should support move-only input iterators introduced by P1207
47 `LWG-3363 <https://wg21.link/LWG-3363>`__ drop_while_view should opt-out of sized_range
48 `LWG-3364 <https://wg21.link/LWG-3364>`__ Initialize data members of ranges and their iterators
49 `LWG-3381 <https://wg21.link/LWG-3381>`__ begin and data must agree for contiguous_range
50 `LWG-3384 <https://wg21.link/LWG-3384>`__ transform_view::sentinel has an incorrect operator-
51 `LWG-3385 <https://wg21.link/LWG-3385>`__ common_iterator is not sufficiently constrained for non-copyable iterators
52 `LWG-3387 <https://wg21.link/LWG-3387>`__ [range.reverse.view] reverse_view<V> unintentionally requires range<const V>
53 `LWG-3388 <https://wg21.link/LWG-3388>`__ view iterator types have ill-formed <=> operators
54 `LWG-3389 <https://wg21.link/LWG-3389>`__ A move-only iterator still does not have a counted_iterator
55 `LWG-3397 <https://wg21.link/LWG-3397>`__ ranges::basic_istream_view::iterator should not provide iterator_category
56 `LWG-3398 <https://wg21.link/LWG-3398>`__ tuple_element_t is also wrong for const subrange
57 `LWG-3474 <https://wg21.link/LWG-3474>`__ Nesting join_views is broken because of CTAD
58 `LWG-3500 <https://wg21.link/LWG-3500>`__ join_view::iterator::operator->() is bogus
59 `LWG-3505 <https://wg21.link/LWG-3505>`__ split_view::outer-iterator::operator++ misspecified

View File

@ -0,0 +1,51 @@
.. ranges-status:
================================
libc++ Ranges Status
================================
.. include:: Helpers/Styles.rst
.. contents::
:local:
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
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.
Sub-Projects in the One Ranges Proposal
=======================================
.. csv-table::
:file: OneRangesProposalStatus.csv
:header-rows: 1
:widths: auto
Misc. Items and TODOs
====================================
(Note: files with required updates will contain the TODO at the begining of the list item
so they can be easily found via global search.)
* TODO(XX_SPACESHIP_CONCEPTS): when spaceship support is added to various STL types, we need to update some concept tests.
Paper and Issue Status
====================================
(Note: stolen from MSVC `here <https://github.com/microsoft/STL/issues/39>`_.)
.. csv-table::
:file: RangesIssuePaperStatus.csv
:header-rows: 1
:widths: auto

View File

@ -43,6 +43,7 @@ Getting Started with libc++
Cxx1zStatus
Cxx2aStatus
Cxx2bStatus
RangesStatus
.. toctree::