[libcxx][ranges] adds `range` access CPOs
authorChristopher Di Bella <cjdb@google.com>
Sun, 11 Apr 2021 05:08:32 +0000 (05:08 +0000)
committerChristopher Di Bella <cjdb@google.com>
Fri, 30 Apr 2021 16:56:42 +0000 (16:56 +0000)
commit5a3309f8257690838d8dbc8c973cdc90a32dba33
treedddebece8d0df2979411a56cf4e8c8400b64ff40
parenta3fd82c289878e1a8fa5833d87b688cd50624247
[libcxx][ranges] adds `range` access CPOs

* `std::ranges::begin`
* `std::ranges::cbegin`
* `std::ranges::end`
* `std::ranges::cend`
* `std::ranges::iterator` (required for `end`)

Implements parts of:
    * P0896R4 The One Ranges Proposal`

Co-author: @zoecarver

Depends on D90999, D100160.

Differential Revision: https://reviews.llvm.org/D100255
36 files changed:
libcxx/include/CMakeLists.txt
libcxx/include/__ranges/access.h [new file with mode: 0644]
libcxx/include/module.modulemap
libcxx/include/ranges
libcxx/include/type_traits
libcxx/test/std/containers/associative/map/range_concept_conformance.compile.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/associative/multimap/range_concept_conformance.compile.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/associative/multiset/range_concept_conformance.compile.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/associative/set/range_concept_conformance.compile.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/sequences/array/range_concept_conformance.compile.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/sequences/deque/range_concept_conformance.compile.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/sequences/forwardlist/range_concept_conformance.compile.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/sequences/list/range_concept_conformance.compile.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/sequences/vector.bool/range_concept_conformance.compile.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/sequences/vector/range_concept_conformance.compile.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/unord/unord.map/range_concept_conformance.compile.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/unord/unord.multimap/range_concept_conformance.compile.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/unord/unord.multiset/range_concept_conformance.compile.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/unord/unord.set/range_concept_conformance.compile.pass.cpp [new file with mode: 0644]
libcxx/test/std/containers/views/range_concept_conformance.compile.pass.cpp [new file with mode: 0644]
libcxx/test/std/input.output/filesystems/class.directory_iterator/range_concept_conformance.compile.pass.cpp [new file with mode: 0644]
libcxx/test/std/input.output/filesystems/class.path/range_concept_conformance.compile.pass.cpp [new file with mode: 0644]
libcxx/test/std/ranges/range.access/range.access.begin/begin.pass.cpp [new file with mode: 0644]
libcxx/test/std/ranges/range.access/range.access.begin/incomplete.compile.verify.cpp [new file with mode: 0644]
libcxx/test/std/ranges/range.access/range.access.cbegin/cbegin.compile.pass.cpp [new file with mode: 0644]
libcxx/test/std/ranges/range.access/range.access.cbegin/incomplete.compile.verify copy.cpp [new file with mode: 0644]
libcxx/test/std/ranges/range.access/range.access.cbegin/incomplete.compile.verify.cpp [new file with mode: 0644]
libcxx/test/std/ranges/range.access/range.access.cend/cend.compile.pass.cpp [new file with mode: 0644]
libcxx/test/std/ranges/range.access/range.access.cend/incomplete.compile.verify.cpp [new file with mode: 0644]
libcxx/test/std/ranges/range.access/range.access.end/end.cpp [new file with mode: 0644]
libcxx/test/std/ranges/range.access/range.access.end/incomplete.compile.verify.cpp [new file with mode: 0644]
libcxx/test/std/ranges/range.range/iterator_t.compile.pass.cpp [new file with mode: 0644]
libcxx/test/std/re/re.results/range_concept_conformance.compile.pass.cpp [new file with mode: 0644]
libcxx/test/std/strings/basic.string/range_concept_conformance.compile.pass.cpp [new file with mode: 0644]
libcxx/test/std/strings/string.view/range_concept_conformance.compile.pass.cpp [new file with mode: 0644]
libcxx/test/support/test_range.h [new file with mode: 0644]