From a742057c0cd30ddb6d825a6e57f913b027d3fb9d Mon Sep 17 00:00:00 2001 From: Johannes Kalmbach Date: Wed, 11 Dec 2024 11:39:48 +0100 Subject: [PATCH 1/2] Also allow for move-only views. --- include/range/v3/range/concepts.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/range/v3/range/concepts.hpp b/include/range/v3/range/concepts.hpp index 1e2c6c633..615d84d45 100644 --- a/include/range/v3/range/concepts.hpp +++ b/include/range/v3/range/concepts.hpp @@ -251,7 +251,7 @@ namespace ranges template CPP_concept view_ = range && - copyable && + movable && enable_view; /// \concept viewable_range From f3057d3b4b417632c7ed504b3c472fe0dcc0bd62 Mon Sep 17 00:00:00 2001 From: Johannes Kalmbach Date: Wed, 11 Dec 2024 11:55:18 +0100 Subject: [PATCH 2/2] Add a test for the changed concept --- test/utility/concepts.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/test/utility/concepts.cpp b/test/utility/concepts.cpp index bc088c31f..7a6a373df 100644 --- a/test/utility/concepts.cpp +++ b/test/utility/concepts.cpp @@ -318,6 +318,14 @@ struct myview : ranges::view_base { }; CPP_assert(ranges::view_); +struct move_only_view : myview { + move_only_view(const move_only_view&) = delete; + move_only_view& operator=(const move_only_view &) = delete; + move_only_view(move_only_view&&) = default; + move_only_view& operator=(move_only_view &&) = default; +}; +CPP_assert(ranges::view_); + CPP_template(class T) (requires ranges::regular) constexpr bool is_regular(T&&)