From 4932d9b3e4a0677a73c9a3c5a7175ec5f30d5ac2 Mon Sep 17 00:00:00 2001 From: Wim Haeck Date: Tue, 7 May 2024 15:15:49 -0600 Subject: [PATCH] some more updates --- src/tools/std23/views/stride.hpp | 14 ++++++++++++++ src/tools/std23/views/test/chunk.test.cpp | 6 ++++++ src/tools/std23/views/test/chunk_by.test.cpp | 6 ++++++ src/tools/std23/views/test/stride.test.cpp | 6 ++++++ 4 files changed, 32 insertions(+) diff --git a/src/tools/std23/views/stride.hpp b/src/tools/std23/views/stride.hpp index 6ecb05f..d88a6e7 100644 --- a/src/tools/std23/views/stride.hpp +++ b/src/tools/std23/views/stride.hpp @@ -245,6 +245,20 @@ struct stride_view : std20::ranges::view_interface< stride_view< R > > { return -( right - left ); } + + friend constexpr std20::ranges::range_rvalue_reference_t< Base > + iter_move( const iterator& iter ) noexcept(noexcept( std20::ranges::iter_move( iter.current_ ) ) ) { + + return std20::ranges::iter_move( iter.current_ ); + } + + template < typename B = Base > + friend constexpr auto iter_swap( const iterator& left, const iterator& right ) + noexcept(noexcept(std20::ranges::iter_swap( left.current_, right.current_ ))) + -> std::enable_if_t > { + + std20::ranges::iter_swap( left.current_, right.current_ ); + } }; public: diff --git a/src/tools/std23/views/test/chunk.test.cpp b/src/tools/std23/views/test/chunk.test.cpp index 467d563..d6935f7 100644 --- a/src/tools/std23/views/test/chunk.test.cpp +++ b/src/tools/std23/views/test/chunk.test.cpp @@ -30,6 +30,8 @@ SCENARIO( "chunk_view" ) { THEN( "the chunk_view satisfies the required concepts" ) { + CHECK( std20::ranges::viewable_range< Range > ); + CHECK( std20::ranges::range< Range > ); CHECK( std20::ranges::view< Range > ); CHECK( ! std20::ranges::sized_range< Range > ); @@ -70,6 +72,8 @@ SCENARIO( "chunk_view" ) { THEN( "the chunk_view satisfies the required concepts" ) { + CHECK( std20::ranges::viewable_range< Range > ); + CHECK( std20::ranges::range< Range > ); CHECK( std20::ranges::view< Range > ); CHECK( std20::ranges::sized_range< Range > ); @@ -122,6 +126,8 @@ SCENARIO( "chunk_view" ) { THEN( "the chunk_view satisfies the required concepts" ) { + CHECK( std20::ranges::viewable_range< Range > ); + CHECK( std20::ranges::range< Range > ); CHECK( std20::ranges::view< Range > ); CHECK( std20::ranges::sized_range< Range > ); diff --git a/src/tools/std23/views/test/chunk_by.test.cpp b/src/tools/std23/views/test/chunk_by.test.cpp index 2231033..eaeeb5b 100644 --- a/src/tools/std23/views/test/chunk_by.test.cpp +++ b/src/tools/std23/views/test/chunk_by.test.cpp @@ -29,6 +29,8 @@ SCENARIO( "chunk_by_view" ) { THEN( "the chunk_by_view satisfies the required concepts" ) { + CHECK( std20::ranges::viewable_range< Range > ); + CHECK( std20::ranges::range< Range > ); CHECK( std20::ranges::view< Range > ); CHECK( ! std20::ranges::sized_range< Range > ); @@ -75,6 +77,8 @@ SCENARIO( "chunk_by_view" ) { THEN( "the chunk_by_view satisfies the required concepts" ) { + CHECK( std20::ranges::viewable_range< Range > ); + CHECK( std20::ranges::range< Range > ); CHECK( std20::ranges::view< Range > ); CHECK( ! std20::ranges::sized_range< Range > ); @@ -137,6 +141,8 @@ SCENARIO( "chunk_by_view" ) { THEN( "the chunk_by_view satisfies the required concepts" ) { + CHECK( std20::ranges::viewable_range< Range > ); + CHECK( std20::ranges::range< Range > ); CHECK( std20::ranges::view< Range > ); CHECK( ! std20::ranges::sized_range< Range > ); diff --git a/src/tools/std23/views/test/stride.test.cpp b/src/tools/std23/views/test/stride.test.cpp index 1a5a32d..43be801 100644 --- a/src/tools/std23/views/test/stride.test.cpp +++ b/src/tools/std23/views/test/stride.test.cpp @@ -29,6 +29,8 @@ SCENARIO( "stride_view" ) { THEN( "the stride_view satisfies the required concepts" ) { + CHECK( std20::ranges::viewable_range< Range > ); + CHECK( std20::ranges::range< Range > ); CHECK( std20::ranges::view< Range > ); CHECK( ! std20::ranges::sized_range< Range > ); @@ -63,6 +65,8 @@ SCENARIO( "stride_view" ) { THEN( "the stride_view satisfies the required concepts" ) { + CHECK( std20::ranges::viewable_range< Range > ); + CHECK( std20::ranges::range< Range > ); CHECK( std20::ranges::view< Range > ); CHECK( std20::ranges::sized_range< Range > ); @@ -100,6 +104,8 @@ SCENARIO( "stride_view" ) { THEN( "the stride_view satisfies the required concepts" ) { + CHECK( std20::ranges::viewable_range< Range > ); + CHECK( std20::ranges::range< Range > ); CHECK( std20::ranges::view< Range > ); CHECK( std20::ranges::sized_range< Range > );