std::ranges::zip_view<Views...>:: end

From cppreference.com
Ranges library
Range adaptors
constexpr auto end ( )
requires ( ! ( /*simple-view*/ < Views > && ... ) ;
(1) (since C++23)
constexpr auto end ( ) const
requires ( ranges:: range < const Views > && ... ) ;
(2) (since C++23)
template < class ... Rs >

concept /*zip-is-common*/ =
( sizeof... ( Rs ) == 1 && ( ranges:: common_range < Rs > && ... ) )
||
( ! ( ranges:: bidirectional_range < Rs > && ... ) && ( ranges:: common_range < Rs > && ... ) )
||

( ( ranges:: random_access_range < Rs > && ... ) && ( ranges:: sized_range < Rs > && ... ) ) ;
(3) ( exposition only* )

Returns an iterator or a sentinel that compares equal to the end iterator of the zip_view .

Let views_ denote the underlying tuple of views.

1) Equivalent to:
  • return /*sentinel*/ < false > ( /*tuple-transform*/ ( ranges:: end , views_ ) ) ; ,
if /*zip-is-common*/ < Views... > evaluates to false . Otherwise,
if ( ranges:: random_access_range < Views > && ... ) evaluates to true . Otherwise,
  • return /*iterator*/ < false > ( /*tuple-transform*/ ( ranges:: end , views_ ) ) ; .
2) Equivalent to:
  • return /*sentinel*/ < true > ( /*tuple-transform*/ ( ranges:: end , views_ ) ) ; ,
if /*zip-is-common*/ < const Views... > evaluates to false . Otherwise,
if ranges:: random_access_range < const Views > && ... evaluates to true . Otherwise,
  • return /*iterator*/ < true > ( /*tuple-transform*/ ( ranges:: end , views_ ) ) ; .

Parameters

(none)

Return value

An iterator or sentinel representing the end of the zip_view , as described above.

Notes

ranges:: range < const ranges:: zip_view < Views... >> is modeled if and only if for every type Vi in Views... , const Vi models range .

Example

See also

returns an iterator to the beginning
(public member function)
returns a sentinel indicating the end of a range
(customization point object)