@@ -47,15 +47,15 @@ namespace ranges {
4747// - `f1 | f2` is an adaptor closure `g` such that `g(x)` is equivalent to `f2(f1(x))`
4848template <class _Tp >
4949 requires is_class_v<_Tp> && same_as<_Tp, remove_cv_t <_Tp>>
50- struct __range_adaptor_closure ;
50+ struct __range_adaptor_closure {} ;
5151
5252// Type that wraps an arbitrary function object and makes it into a range adaptor closure,
5353// i.e. something that can be called via the `x | f` notation.
5454template <class _Fn >
55- struct __range_adaptor_closure_t : _Fn, __range_adaptor_closure<__range_adaptor_closure_t <_Fn>> {
56- _LIBCPP_HIDE_FROM_ABI constexpr explicit __range_adaptor_closure_t (_Fn&& __f) : _Fn(std::move(__f)) {}
55+ struct __pipeable : _Fn, __range_adaptor_closure<__pipeable <_Fn>> {
56+ _LIBCPP_HIDE_FROM_ABI constexpr explicit __pipeable (_Fn&& __f) : _Fn(std::move(__f)) {}
5757};
58- _LIBCPP_CTAD_SUPPORTED_FOR_TYPE (__range_adaptor_closure_t );
58+ _LIBCPP_CTAD_SUPPORTED_FOR_TYPE (__pipeable );
5959
6060template <class _Tp >
6161_Tp __derived_from_range_adaptor_closure (__range_adaptor_closure<_Tp>*);
@@ -79,13 +79,9 @@ template <_RangeAdaptorClosure _Closure, _RangeAdaptorClosure _OtherClosure>
7979[[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr auto operator |(_Closure&& __c1, _OtherClosure&& __c2) noexcept (
8080 is_nothrow_constructible_v<decay_t <_Closure>, _Closure> &&
8181 is_nothrow_constructible_v<decay_t <_OtherClosure>, _OtherClosure>) {
82- return __range_adaptor_closure_t (std::__compose (std::forward<_OtherClosure>(__c2), std::forward<_Closure>(__c1)));
82+ return __pipeable (std::__compose (std::forward<_OtherClosure>(__c2), std::forward<_Closure>(__c1)));
8383}
8484
85- template <class _Tp >
86- requires is_class_v<_Tp> && same_as<_Tp, remove_cv_t <_Tp>>
87- struct __range_adaptor_closure {};
88-
8985# if _LIBCPP_STD_VER >= 23
9086template <class _Tp >
9187 requires is_class_v<_Tp> && same_as<_Tp, remove_cv_t <_Tp>>
0 commit comments