mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-27 21:16:05 +00:00

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)
520 B
520 B
1 | Standard | Name | Assignee | CL | Status |
---|---|---|---|---|---|
2 | C++23 | `ranges::to <https://wg21.link/P1206R7>`_ | Konstantin Varlamov | `D142335 <https://reviews.llvm.org/D142335>`_ | Complete |
3 | C++23 | `Pipe support for user-defined range adaptors <https://wg21.link/P2387R3>`_ | Louis Dionne, Jakub Mazurkiewicz, and Xiaoyang Liu | Various | Complete |
4 | C++23 | `Formatting Ranges <https://wg21.link/P2286R8>`_ | Mark de Wever | Various | Complete |
5 | C++20 | `Stashing stashing iterators for proper flattening <https://wg21.link/P2770R0>`_ | Jakub Mazurkiewicz | Various | In progress |