[libcxx][ranges] adds `ranges::range`, `ranges::common_range`, and range aliases
authorChristopher Di Bella <cjdb@google.com>
Sun, 11 Apr 2021 17:40:30 +0000 (17:40 +0000)
committerChristopher Di Bella <cjdb@google.com>
Fri, 30 Apr 2021 16:56:42 +0000 (16:56 +0000)
commit7c17731596e9cb05b861f1a1be35fb827d33f632
tree6362ca5d6ce7301bad8d716928a5ffe967444332
parent5a3309f8257690838d8dbc8c973cdc90a32dba33
[libcxx][ranges] adds `ranges::range`, `ranges::common_range`, and range aliases

* `std::ranges::range`
* `std::ranges::sentinel_t`
* `std::ranges::range_difference_t`
* `std::ranges::range_value_t`
* `std::ranges::range_reference_t`
* `std::ranges::range_rvalue_reference_t`
* `std::ranges::common_range`

`range_size_t` depends on `sized_range` and will be added alongside it.

Implements parts of:
    * P0896R4 The One Ranges Proposal`

Depends on D100255.

Differential Revision: https://reviews.llvm.org/D100269
28 files changed:
libcxx/include/CMakeLists.txt
libcxx/include/__ranges/concepts.h [new file with mode: 0644]
libcxx/include/ranges
libcxx/test/std/containers/associative/map/range_concept_conformance.compile.pass.cpp
libcxx/test/std/containers/associative/multimap/range_concept_conformance.compile.pass.cpp
libcxx/test/std/containers/associative/multiset/range_concept_conformance.compile.pass.cpp
libcxx/test/std/containers/associative/set/range_concept_conformance.compile.pass.cpp
libcxx/test/std/containers/sequences/array/range_concept_conformance.compile.pass.cpp
libcxx/test/std/containers/sequences/deque/range_concept_conformance.compile.pass.cpp
libcxx/test/std/containers/sequences/forwardlist/range_concept_conformance.compile.pass.cpp
libcxx/test/std/containers/sequences/list/range_concept_conformance.compile.pass.cpp
libcxx/test/std/containers/sequences/vector.bool/range_concept_conformance.compile.pass.cpp
libcxx/test/std/containers/sequences/vector/range_concept_conformance.compile.pass.cpp
libcxx/test/std/containers/unord/unord.map/range_concept_conformance.compile.pass.cpp
libcxx/test/std/containers/unord/unord.multimap/range_concept_conformance.compile.pass.cpp
libcxx/test/std/containers/unord/unord.multiset/range_concept_conformance.compile.pass.cpp
libcxx/test/std/containers/unord/unord.set/range_concept_conformance.compile.pass.cpp
libcxx/test/std/containers/views/range_concept_conformance.compile.pass.cpp
libcxx/test/std/input.output/filesystems/class.directory_iterator/range_concept_conformance.compile.pass.cpp
libcxx/test/std/input.output/filesystems/class.path/range_concept_conformance.compile.pass.cpp
libcxx/test/std/ranges/range.range/helper_aliases.compile.pass.cpp [new file with mode: 0644]
libcxx/test/std/ranges/range.range/range.compile.pass.cpp [new file with mode: 0644]
libcxx/test/std/ranges/range.range/sentinel_t.compile.pass.cpp [new file with mode: 0644]
libcxx/test/std/ranges/range.refinements/common_range.compile.pass.cpp [new file with mode: 0644]
libcxx/test/std/re/re.results/range_concept_conformance.compile.pass.cpp
libcxx/test/std/strings/basic.string/range_concept_conformance.compile.pass.cpp
libcxx/test/std/strings/string.view/range_concept_conformance.compile.pass.cpp
libcxx/test/support/test_range.h