Skip to content

Commit

Permalink
fixing the last issues in zip_transform
Browse files Browse the repository at this point in the history
  • Loading branch information
whaeck committed Jun 21, 2024
1 parent d142091 commit 684c416
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 10 deletions.
18 changes: 9 additions & 9 deletions src/tools/std23/views/test/zip_transform.test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ SCENARIO( "zip_view" ) {
CHECK( std20::ranges::bidirectional_range< Range > );
CHECK( ! std20::ranges::random_access_range< Range > );
CHECK( ! std20::ranges::contiguous_range< Range > );
// CHECK( std20::ranges::common_range< Range > );
CHECK( ! std20::ranges::common_range< Range > );
}

THEN( "a stride_view can be constructed and members can be tested" ) {
Expand Down Expand Up @@ -112,7 +112,7 @@ SCENARIO( "zip_view" ) {
CHECK( std20::ranges::sized_range< Range > );
CHECK( std20::ranges::forward_range< Range > );
CHECK( std20::ranges::bidirectional_range< Range > );
// CHECK( std20::ranges::random_access_range< Range > );
CHECK( std20::ranges::random_access_range< Range > );
CHECK( ! std20::ranges::contiguous_range< Range > );
CHECK( std20::ranges::common_range< Range > );
}
Expand All @@ -129,13 +129,13 @@ SCENARIO( "zip_view" ) {
CHECK( equal[0] == chunk.front() );
CHECK( equal[6] == chunk.back() );

// CHECK( 26 == chunk[0] );
// CHECK( 29 == chunk[1] );
// CHECK( 32 == chunk[2] );
// CHECK( 35 == chunk[3] );
// CHECK( 38 == chunk[4] );
// CHECK( 41 == chunk[5] );
// CHECK( 44 == chunk[6] );
CHECK( 26 == chunk[0] );
CHECK( 29 == chunk[1] );
CHECK( 32 == chunk[2] );
CHECK( 35 == chunk[3] );
CHECK( 38 == chunk[4] );
CHECK( 41 == chunk[5] );
CHECK( 44 == chunk[6] );
} // THEN
} // WHEN
} // GIVEN
Expand Down
12 changes: 11 additions & 1 deletion src/tools/std23/views/zip_transform.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -213,6 +213,16 @@ private :

return iterator{ left } -= n;
}

template < typename B = Base >
friend constexpr auto operator-( const iterator& left, const iterator& right )
-> std::enable_if_t<
std20::ranges::sized_sentinel_for< std20::ranges::iterator_t< B >,
std20::ranges::iterator_t< B > >,
difference_type > {

return left.current_ - right.current_;
}
};

template < bool Const >
Expand Down Expand Up @@ -277,7 +287,7 @@ private :
-> std::enable_if_t< std20::ranges::sized_sentinel_for< InnerSentinel< Const >, InnerIterator< Other > >,
std20::ranges::range_difference_t< maybe_const< Other, InnerView > > > {

return right - left;
return -( right - left );
}
};

Expand Down

0 comments on commit 684c416

Please sign in to comment.