Konstantin Varlamov
7e9d19016e
[libc++][ranges][NFC] Small updates to the Ranges status page:
...
- note that `split_view` has been renamed to `lazy_split_view`.
- fix formatting.
2022-02-02 13:33:15 -08:00
Konstantin Varlamov
e65d3760a3
[libc++][ranges] Implement `indirectly_copyable{,_storable}`.
...
Also refactor tests for `indirectly_movable{,_storable}`.
Differential Revision: https://reviews.llvm.org/D118432
2022-02-02 13:27:44 -08:00
Konstantin Varlamov
a37a05d0dc
[libc++][ranges][NFC] In the Ranges status, mark move_sentinel as "in progress"
2022-02-02 13:15:54 -08:00
Konstantin Varlamov
298331f14d
[libc++][ranges][NFC] Test new requirements for `basic_string_view` and `span` iterators.
...
Note that most changes to `strings` and `views.span` from the One Ranges
Proposal are no longer applicable:
- free `begin` and `end` functions taking `basic_string_view` and `span`
were removed by [P1870](http://wg21.link/p1870 );
- `span::const_iterator` was removed by [LWG3320](https://cplusplus.github.io/LWG/lwg-defects.html#3320 ).
Reviewed By: #libc, Quuxplusone, ldionne
Differential Revision: https://reviews.llvm.org/D118687
2022-02-02 12:54:39 -08:00
Konstantin Varlamov
f681d7d558
[libc++][ranges][NFC] Add contiguous_iterator_tag to the <iterator> synopsis
...
It was previously implemented by commit [45d048c20
](https://reviews.llvm.org/rG45d048c20440989df2b4e1be1f9343225e7741ab ).
Reviewed By: #libc, Quuxplusone, philnik, ldionne
Differential Revision: https://reviews.llvm.org/D118751
2022-02-02 12:53:15 -08:00
Konstantin Varlamov
e1f7edb64b
[libc++][ranges][NFC] Fix an inconsistent patch link on the Ranges status page.
2022-02-01 16:50:33 -08:00
Konstantin Varlamov
039e55d618
[libc++][ranges][NFC] In the Ranges status, list the changes to stream.iterators
2022-02-01 14:41:09 -08:00
Konstantin Varlamov
d5ce90f414
[libc++][ranges][NFC] In the Ranges status, list the changes to predef.iterators
2022-02-01 14:34:40 -08:00
Konstantin Varlamov
85dae4c11e
[libc++][ranges][NFC] Fix formatting on newly-added links on the Ranges status page.
2022-01-31 14:45:21 -08:00
Konstantin Varlamov
7c89c2ac6f
[libc++][ranges][NFC] Add some missing links to the Ranges status page.
2022-01-31 11:23:40 -08:00
Arthur O'Dwyer
c965d5448e
[libc++] [ranges] Implement std::ranges::distance
...
This includes an experimental workaround for
LWG3664 "LWG3392 broke std::ranges::distance(a, a+3)",
but the workaround may be incomplete, I'm not sure.
This should be re-audited when LWG3664 is actually adopted,
to see if we need to change anything about our implementation.
See also https://github.com/microsoft/STL/pull/2500
Differential Revision: https://reviews.llvm.org/D117940
2022-01-31 12:23:10 -05:00
Konstantin Varlamov
46283589ef
[libc++][ranges][NFC] Small cleanup to the Ranges status page.
...
- add a few missing links to code reviews;
- reorder the views to follow the same order as in the Standard.
2022-01-28 22:40:07 -08:00
Konstantin Varlamov
c38c134b62
[libc++][ranges][NFC] Update and slightly cleanup Ranges status page.
...
- add missing links to sections of the Standard and to patches;
- update the status on a couple of items.
2022-01-28 20:15:36 -08:00
Arthur O'Dwyer
483f7f5536
[libc++] [ranges] Implement ranges::cdata.
...
Differential Revision: https://reviews.llvm.org/D117044
2022-01-12 22:07:13 -05:00
Konstantin Varlamov
b9bc3c107c
[libc++][ranges] Implement `construct_at` and `destroy{,_at}`.
...
Differential Revision: https://reviews.llvm.org/D116078
2022-01-12 16:01:04 -08:00
Konstantin Varlamov
8d23b7420c
[libc++][ranges] Implement `uninitialized_copy{,_n}` and `uninitialized_move{,_n}`.
...
Also implement `in_out_result` which is a prerequisite.
Differential Revision: https://reviews.llvm.org/D116023
2022-01-10 22:49:50 -08:00
Nikolas Klauser
6d722801d1
[libc++][ranges] Add indirectly_comparable concept
...
Add `indirectly_comparable` concept
Reviewed By: Quuxplusone, Mordante, #libc
Spies: mgorny, libcxx-commits
Differential Revision: https://reviews.llvm.org/D116268
2022-01-04 23:40:57 +01:00
Konstantin Varlamov
754ea6fd4d
[libc++][ranges] Implement `uninitialized_value_construct{,_n}` and `uninitialized_fill{,_n}`.
...
Also:
- refactor out `__voidify`;
- use the `destroy` algorithm internally;
- refactor out helper classes used in tests for `uninitialized_*`
algorithms.
Differential Revision: https://reviews.llvm.org/D115626
2021-12-20 00:24:27 -08:00
Konstantin Varlamov
3f630cff65
[libc++][ranges] Implement ranges::uninitialized_default_construct{,_n}.
...
Defined in [`specialized.algorithms`](wg21.link/specialized.algorithms).
Also:
- refactor the existing non-range implementation so that most of it
can be shared between the range-based and non-range-based algorithms;
- remove an existing test for the non-range version of
`uninitialized_default_construct{,_n}` that likely triggered undefined
behavior (it read the values of built-ins after default-initializing
them, essentially reading uninitialized memory).
Reviewed By: #libc, Quuxplusone, ldionne
Differential Revision: https://reviews.llvm.org/D115315
2021-12-14 14:11:46 -08:00
Konstantin Varlamov
2d9efcfeec
[libc++][ranges] Implement [special.mem.concepts].
...
Implement the exposition-only concepts specified in
`[special.mem.concepts]`. These are all thin wrappers over other
concepts.
Reviewed By: #libc, Quuxplusone, ldionne
Differential Revision: https://reviews.llvm.org/D114761
2021-12-02 17:58:04 -08:00
Konstantin Varlamov
3b463c4528
[libc++][NFC] Assign some Ranges tasks to varconst.
...
Specifically:
- [special.mem.concepts];
- [specialized.algorithms].
2021-11-18 15:15:21 -08:00
Louis Dionne
1295694364
[libc++][NFC] Add missing link to a ranges review
2021-09-24 11:37:38 -04:00
zoecarver
df324bba5c
[libcxx][ranges] Add `ranges::join_view`.
...
Differential Revision: https://reviews.llvm.org/D107671
2021-08-13 11:31:08 -07:00
zoecarver
7b20e05c71
[libcxx][ranges] Add `ranges::iota_view`.
...
Differential Revision: https://reviews.llvm.org/D107396
2021-08-13 11:31:08 -07:00
zoecarver
f9e58f35e9
[libcxx][ranges] Add `views::counted` CPO.
...
Differential Revision: https://reviews.llvm.org/D106923
2021-08-10 16:42:28 -07:00
zoecarver
9d982c67ba
[libcxx][ranges] Add `ranges::reverse_view`.
...
Differential Revision: https://reviews.llvm.org/D107096
2021-08-09 15:09:59 -07:00
zoecarver
3df649e619
[libcxx][docs] Take locks on the last three views.
2021-07-30 15:08:01 -07:00
zoecarver
481ad59b9f
[libcxx][ranges] Add `std::ranges::single_view`.
...
Differential Revision: https://reviews.llvm.org/D106840
2021-07-30 10:53:20 -07:00
zoecarver
0f4b41e038
[libcxx][ranges] Add ranges::take_view.
...
Differential Revision: https://reviews.llvm.org/D106507
2021-07-28 12:14:21 -07:00
zoecarver
8a48e6dda9
[libcxx][ranges] Add `counted_iterator`.
...
Differential Revision: https://reviews.llvm.org/D106205
2021-07-27 15:50:11 -07:00
Louis Dionne
7b28c5d376
[libc++] Implement the output_iterator and output_range concepts
...
Differential Revision: https://reviews.llvm.org/D106704
2021-07-26 15:05:17 -04:00
Louis Dionne
fbaf7f0bc7
[libc++] Add range_size_t
...
Differential Revision: https://reviews.llvm.org/D106708
2021-07-26 12:19:26 -04:00
zoecarver
e5d8b93e5a
[libcxx][ranges] Add `ranges::common_view`.
...
Differential Revision: https://reviews.llvm.org/D105753
2021-07-23 09:08:49 -07:00
zoecarver
6f5064cd0c
[libc++][docs] Take lock for range.single.view.
...
Mark this item as in progress and assigned to me.
2021-07-22 11:15:24 -07:00
Christopher Di Bella
74fd3cb8cd
[libcxx][ranges] implements dangling, borrowed_iterator_t, borrowed_subrange_t
...
* Implements part of P0896 'The One Ranges Proposal'
* Implements http://wg21.link/range.dangling
Reviewed By: zoecarver
Differential Revision: https://reviews.llvm.org/D105205
2021-07-21 21:34:13 +00:00
zoecarver
1a29403d2f
[libcxx][ranges] Add common_iterator.
...
Differential Revision: https://reviews.llvm.org/D103335
2021-07-20 08:12:44 -07:00
Louis Dionne
3001b48d76
[libc++] Implement views::all_t and ranges::viewable_range
...
Differential Revision: https://reviews.llvm.org/D105816
2021-07-15 07:54:33 -04:00
zoecarver
e5e291e135
[libcxx][docs] Update the ranges status document to reflect the current state of the world.
...
Marks a few things as done. Marks a few things as in progress. Assigns a few things to me.
2021-07-12 13:11:17 -07:00
zoecarver
0e09a41b41
[libcxx][ranges] Add `ranges::transform_view`.
...
Reviewed By: cjdb, ldionne, #libc
Differential Revision: https://reviews.llvm.org/D103056
2021-07-09 10:13:57 -07:00
Louis Dionne
cf005c4c50
[libc++] NFC: Move the status docs to their own subdirectory
...
This cleans up the libcxx/doc directory quite a bit and will avoid the
proliferation of status files in that directory as new standards are voted.
2021-07-06 09:48:34 -04:00