From de855b3a79dcf3a20e971302b3346180af5e6828 Mon Sep 17 00:00:00 2001 From: Marco Bubke Date: Fri, 2 May 2025 19:11:21 +0200 Subject: [PATCH] Utils: Move range_adaptor_closure to Utils::ranges As an implentation of https://en.cppreference.com/w/cpp/ranges/range_adaptor_closure it makes it easier to write your own range adapters. Change-Id: I573d9ca300af7e1cf4225f99f673fa652902e8e3 Reviewed-by: Thomas Hartmann --- src/libs/utils/ranges.h | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/libs/utils/ranges.h b/src/libs/utils/ranges.h index c8bc5d73f8d..0bfb3f70d69 100644 --- a/src/libs/utils/ranges.h +++ b/src/libs/utils/ranges.h @@ -226,8 +226,6 @@ public: template cache_latest_view(Range &&) -> cache_latest_view>; -namespace views { -namespace Internal { template concept can_cache_latest = requires { cache_latest_view(std::declval()); }; @@ -292,9 +290,10 @@ template return Internal::pipeable( Internal::compose(std::forward(second), std::forward(first))); } -} // namespace Internal -struct CacheLatestFunctor : Internal::range_adaptor_closure +namespace views { + +struct CacheLatestFunctor : range_adaptor_closure { # if defined(__GNUC__) && !defined(__clang__) && __GNUC__ == 10 && __GNUC_MINOR__ < 5 template @@ -304,7 +303,7 @@ struct CacheLatestFunctor : Internal::range_adaptor_closure } # else template - requires Internal::can_cache_latest + requires can_cache_latest constexpr auto operator() [[nodiscard]] (Range &&range) const { return cache_latest_view(std::forward(range));