[all-commits] [llvm/llvm-project] 944618: [libc++][ranges] implement `std::views::elements_v...

Hui via All-commits all-commits at lists.llvm.org
Sun Jan 15 09:36:49 PST 2023


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 94461822c75d5080bf648f86552f7a59b76905c9
      https://github.com/llvm/llvm-project/commit/94461822c75d5080bf648f86552f7a59b76905c9
  Author: Hui Xie <hui.xie1990 at gmail.com>
  Date:   2023-01-15 (Sun, 15 Jan 2023)

  Changed paths:
    M libcxx/docs/ReleaseNotes.rst
    M libcxx/docs/Status/Cxx20Issues.csv
    M libcxx/docs/Status/Cxx20Papers.csv
    M libcxx/docs/Status/Cxx2bIssues.csv
    M libcxx/docs/Status/SpaceshipProjects.csv
    M libcxx/include/CMakeLists.txt
    M libcxx/include/__fwd/get.h
    A libcxx/include/__fwd/subrange.h
    A libcxx/include/__ranges/elements_view.h
    M libcxx/include/__ranges/subrange.h
    A libcxx/include/__tuple_dir/pair_like.h
    M libcxx/include/__tuple_dir/sfinae_helpers.h
    M libcxx/include/__tuple_dir/tuple_like.h
    A libcxx/include/__tuple_dir/tuple_like_ext.h
    M libcxx/include/module.modulemap.in
    M libcxx/include/ranges
    M libcxx/include/tuple
    M libcxx/test/libcxx/private_headers.verify.cpp
    A libcxx/test/libcxx/ranges/range.adaptors/range.elements/elements_view.no_unique_address.compile.pass.cpp
    A libcxx/test/libcxx/ranges/range.adaptors/range.elements/sentinel.no_unique_address.compile.pass.cpp
    A libcxx/test/std/ranges/range.adaptors/range.elements/adaptor.pass.cpp
    A libcxx/test/std/ranges/range.adaptors/range.elements/base.pass.cpp
    A libcxx/test/std/ranges/range.adaptors/range.elements/begin.pass.cpp
    A libcxx/test/std/ranges/range.adaptors/range.elements/borrowed.compile.pass.cpp
    A libcxx/test/std/ranges/range.adaptors/range.elements/ctor.default.pass.cpp
    A libcxx/test/std/ranges/range.adaptors/range.elements/ctor.view.pass.cpp
    A libcxx/test/std/ranges/range.adaptors/range.elements/end.pass.cpp
    A libcxx/test/std/ranges/range.adaptors/range.elements/general.pass.cpp
    A libcxx/test/std/ranges/range.adaptors/range.elements/iterator/arithmetic.pass.cpp
    A libcxx/test/std/ranges/range.adaptors/range.elements/iterator/base.pass.cpp
    A libcxx/test/std/ranges/range.adaptors/range.elements/iterator/compare.pass.cpp
    A libcxx/test/std/ranges/range.adaptors/range.elements/iterator/ctor.base.pass.cpp
    A libcxx/test/std/ranges/range.adaptors/range.elements/iterator/ctor.default.pass.cpp
    A libcxx/test/std/ranges/range.adaptors/range.elements/iterator/ctor.other.pass.cpp
    A libcxx/test/std/ranges/range.adaptors/range.elements/iterator/decrement.pass.cpp
    A libcxx/test/std/ranges/range.adaptors/range.elements/iterator/deref.pass.cpp
    A libcxx/test/std/ranges/range.adaptors/range.elements/iterator/increment.pass.cpp
    A libcxx/test/std/ranges/range.adaptors/range.elements/iterator/member_types.compile.pass.cpp
    A libcxx/test/std/ranges/range.adaptors/range.elements/iterator/subscript.pass.cpp
    A libcxx/test/std/ranges/range.adaptors/range.elements/range.concept.compile.pass.cpp
    A libcxx/test/std/ranges/range.adaptors/range.elements/sentinel/base.pass.cpp
    A libcxx/test/std/ranges/range.adaptors/range.elements/sentinel/ctor.base.pass.cpp
    A libcxx/test/std/ranges/range.adaptors/range.elements/sentinel/ctor.convert.pass.cpp
    A libcxx/test/std/ranges/range.adaptors/range.elements/sentinel/ctor.default.pass.cpp
    A libcxx/test/std/ranges/range.adaptors/range.elements/sentinel/equality.pass.cpp
    A libcxx/test/std/ranges/range.adaptors/range.elements/sentinel/minus.pass.cpp
    A libcxx/test/std/ranges/range.adaptors/range.elements/size.pass.cpp
    A libcxx/test/std/ranges/range.adaptors/range.elements/types.h
    M llvm/utils/gn/secondary/libcxx/include/BUILD.gn

  Log Message:
  -----------
  [libc++][ranges] implement `std::views::elements_view`

`subrange` is also a `tuple-like`. To avoid the add entire `subrange` dependencies to `tuple-like`, we need forward declaration of `subrange`. However, the class template constraints of `subrange` currently requires `__iterator/concepts.h`, which requires `<concepts>`. The problem is that currently `tuple-like` is used in several different places, including libc++ extension for pair constructors. we don't want to add `<concepts>` to pair and other stuff. So this change also created several small headers that `subrange`'s declaration needed inside `__iterator/concepts/`

Differential Revision: https://reviews.llvm.org/D136268




More information about the All-commits mailing list