llvm-project/libcxx/docs/Status/RangesMajorFeatures.csv
Xiaoyang Liu c1086532d4
[libc++][ranges] P2387R3: Pipe support for user-defined range adaptors (#89148)
This patch finalizes the std::ranges::range_adaptor_closure
class template from https://wg21.link/P2387R3.

  // [range.adaptor.object], range adaptor objects
  template<class D>
    requires is_class_v<D> && same_as<D, remove_cv_t<D>>
  class range_adaptor_closure { };

The current implementation of __range_adaptor_closure was introduced
in ee44dd8062a26541808fc0d3fd5c6703e19f6016 and has served as the
foundation for the range adaptors in libc++ for a while. This patch
keeps its implementation, with the exception of the following changes:

- __range_adaptor_closure now includes the missing constraints
  `is_class_v<D> && same_as<D, remove_cv_t<D>>` to restrict the 
  type of class that can inherit from it. (https://eel.is/c++draft/ranges.syn)
- The operator| of __range_adaptor_closure no longer requires its
  first argument to model viewable_range. (https://eel.is/c++draft/range.adaptor.object#1)
- The _RangeAdaptorClosure concept is refined to exclude cases where
  T models range or where T has base classes of type range_adaptor_closure<U>
  for another type U. (https://eel.is/c++draft/range.adaptor.object#2)
2024-04-23 10:58:14 -04:00

520 B

1StandardNameAssigneeCLStatus
2C++23`ranges::to <https://wg21.link/P1206R7>`_Konstantin Varlamov`D142335 <https://reviews.llvm.org/D142335>`_Complete
3C++23`Pipe support for user-defined range adaptors <https://wg21.link/P2387R3>`_Louis Dionne, Jakub Mazurkiewicz, and Xiaoyang LiuVariousComplete
4C++23`Formatting Ranges <https://wg21.link/P2286R8>`_Mark de WeverVariousComplete
5C++20`Stashing stashing iterators for proper flattening <https://wg21.link/P2770R0>`_Jakub MazurkiewiczVariousIn progress