w/iterator/operator*")  
[ zip_view:: _iterator_ ::operator[]
](/w/cpp/ranges/zip_view/iterator/operator_at "cpp/ranges/zip
view/iterator/operator at")  
[ zip_view:: _iterator_ ::operator++  
zip_view:: _iterator_ ::operator++  (int)  
zip_view:: _iterator_ ::operator--  
zip_view:: _iterator_ ::operator--  (int)  
zip_view:: _iterator_ ::operator+=  
zip_view:: _iterator_ ::operator-=
](/w/cpp/ranges/zip_view/iterator/operator_arith "cpp/ranges/zip
view/iterator/operator arith")  
[ Non-member functions ](/w/cpp/ranges/zip_view/iterator#Non-member_functions
"cpp/ranges/zip view/iterator")  
[ operator==  (zip_view:: _iterator_ )  
operator< (zip_view:: _iterator_ )  
operator> (zip_view:: _iterator_ )  
operator<=  (zip_view:: _iterator_ )  
operator>=  (zip_view:: _iterator_ )  
operator<=> (zip_view:: _iterator_ )
](/w/cpp/ranges/zip_view/iterator/operator_cmp "cpp/ranges/zip
view/iterator/operator cmp")  
[ operator+  (zip_view:: _iterator_ )  
operator-  (zip_view:: _iterator_ )
](/w/cpp/ranges/zip_view/iterator/operator_arith2 "cpp/ranges/zip
view/iterator/operator arith2")  
[ iter_move  (zip_view:: _iterator_ )
](/w/cpp/ranges/zip_view/iterator/iter_move "cpp/ranges/zip view/iterator/iter
move")  
[ iter_swap  (zip_view:: _iterator_ )
](/w/cpp/ranges/zip_view/iterator/iter_swap "cpp/ranges/zip view/iterator/iter
swap")  
[ Sentinel ](/w/cpp/ranges/zip_view/sentinel "cpp/ranges/zip view/sentinel")  
Member functions  
[ zip_view:: _sentinel_ :: _sentinel_
](/w/cpp/ranges/zip_view/sentinel/sentinel "cpp/ranges/zip
view/sentinel/sentinel")  
Non-member functions  
[ operator==  (zip_view:: _iterator_ ,zip_view:: _sentinel_ )
](/w/cpp/ranges/zip_view/sentinel/operator_cmp "cpp/ranges/zip
view/sentinel/operator cmp")  
[ operator-  (zip_view:: _iterator_ ,zip_view:: _sentinel_ )
](/w/cpp/ranges/zip_view/sentinel/operator- "cpp/ranges/zip
view/sentinel/operator-")  
  
[ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/ranges/zip_view/navbar_content&action=edit)

Defined in header ` [ <ranges> ](/w/cpp/header/ranges "cpp/header/ranges") ` |  |   
---|---|---  
template  < [ ranges::  input_range
](http://en.cppreference.com/w/cpp/ranges/input_range) ...  Views  >  
requires  (  [ ranges::  view  ](http://en.cppreference.com/w/cpp/ranges/view)
< Views  > && ...  )  && (  sizeof...  (  Views  )  > 0  )  
class  zip_view  
:  public  [ ranges::  view_interface  ](http://en.cppreference.com/w/cpp/ranges/view_interface) < zip_view  < Views...  >> |  (1)  |  (since C++23)   
namespace  views  {  
inline  constexpr  /*unspecified*/  zip  =  /*unspecified*/  ;  
}  |  (2)  |  (since C++23)   
Call signature  |  |   
template  < [ ranges::  viewable_range
](http://en.cppreference.com/w/cpp/ranges/viewable_range) ...  Rs  >  
requires  /* see below */  
constexpr  auto  zip  (  Rs  && ...  rs  )  ;  |  |  (since C++23)   
|  |   
  
1)  ` zip_view ` is a range adaptor that takes one or more [ ` view ` s
](/w/cpp/ranges/view "cpp/ranges/view") , and produces a [ ` view `
](/w/cpp/ranges/view "cpp/ranges/view") whose ` _i_ ` th element is a tuple-
like value consisting of the ` _i_ ` th  elements of all views. The size of
produced view is the minimum of sizes of all adapted views.

2)  ` views::zip ` is a customization point object.  

When calling with no argument,  views  ::  zip  (  )  is [ expression-
equivalent ](/w/cpp/language/expressions#Expression-equivalence
"cpp/language/expressions") to  auto  (  [ views::  empty
](http://en.cppreference.com/w/cpp/ranges/empty_view) < [ std::  tuple
](http://en.cppreference.com/w/cpp/utility/tuple) <>> )  .  

Otherwise,  views  ::  zip  (  rs...  )  is _expression-equivalent_ to  ranges
::  zip_view  < [ views::  all_t
](http://en.cppreference.com/w/cpp/ranges/all_view) < decltype  (  (  rs  )  )
> ...  > (  rs...  )  .

` zip_view ` always models [ ` input_range ` ](/w/cpp/ranges/input_range
"cpp/ranges/input range") , and models [ ` forward_range `
](/w/cpp/ranges/