s/join
view/iterator/operator*")  
[ join_view:: _iterator_ ::operator++  
join_view:: _iterator_ ::operator++  (int)  
join_view:: _iterator_ ::operator--  
join_view:: _iterator_ ::operator--  (int)
](/w/cpp/ranges/join_view/iterator/operator_arith "cpp/ranges/join
view/iterator/operator arith")  
[ join_view:: _iterator_ :: _satisfy_
](/w/cpp/ranges/join_view/iterator/satisfy "cpp/ranges/join
view/iterator/satisfy")  
[ operator==  (join_view:: _iterator_ )
](/w/cpp/ranges/join_view/iterator/operator_cmp "cpp/ranges/join
view/iterator/operator cmp")  
[ iter_move  (join_view:: _iterator_ )
](/w/cpp/ranges/join_view/iterator/iter_move "cpp/ranges/join
view/iterator/iter move")  
[ iter_swap  (join_view:: _iterator_ )
](/w/cpp/ranges/join_view/iterator/iter_swap "cpp/ranges/join
view/iterator/iter swap")  
[ Sentinel ](/w/cpp/ranges/join_view/sentinel "cpp/ranges/join view/sentinel")  
[ join_view:: _sentinel_ :: _sentinel_
](/w/cpp/ranges/join_view/sentinel/sentinel "cpp/ranges/join
view/sentinel/sentinel")  
[ operator==  (join_view:: _iterator_ ,join_view:: _sentinel_ )
](/w/cpp/ranges/join_view/sentinel/operator_cmp "cpp/ranges/join
view/sentinel/operator cmp")  
  
[ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/ranges/join_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) V  >  
requires [ ranges::  view  ](http://en.cppreference.com/w/cpp/ranges/view) < V
> and  
[ ranges::  input_range
](http://en.cppreference.com/w/cpp/ranges/input_range) < [ ranges::
range_reference_t  ](http://en.cppreference.com/w/cpp/ranges/iterator_t) < V
>>  
class  join_view  
:  public  [ ranges::  view_interface  ](http://en.cppreference.com/w/cpp/ranges/view_interface) < join_view  < V  >> |  (1)  |  (since C++20)   
namespace  views  {  
inline  constexpr  /* unspecified */  join  =  /* unspecified */  ;  
}  |  (2)  |  (since C++20)   
|  |   
  
1)  A range adaptor that represents [ ` view ` ](/w/cpp/ranges/view
"cpp/ranges/view") consisting of the sequence obtained from flattening a view
of ranges.

2)  [ RangeAdaptorObject  ](/w/cpp/named_req/RangeAdaptorObject "cpp/named
req/RangeAdaptorObject") (and also [ RangeAdaptorClosureObject
](/w/cpp/named_req/RangeAdaptorClosureObject "cpp/named
req/RangeAdaptorClosureObject") ). The expression  views  ::  join  (  e  )
is [ expression-equivalent ](/w/cpp/language/expressions#Expression-
equivalence "cpp/language/expressions") to  join_view  < [ views::  all_t
](http://en.cppreference.com/w/cpp/ranges/all_view) < decltype  (  (  e  )  )
>> {  e  }  for any suitable subexpressions  e  .

` join_view ` models [ ` input_range ` ](/w/cpp/ranges/input_range
"cpp/ranges/input range") .

` join_view ` models [ ` forward_range ` ](/w/cpp/ranges/forward_range
"cpp/ranges/forward range") when:

  * [ ranges::  range_reference_t  ](http://en.cppreference.com/w/cpp/ranges/iterator_t) < V  > is a reference type, and 
  * V  and  [ ranges::  range_reference_t  ](http://en.cppreference.com/w/cpp/ranges/iterator_t) < V  > each model [ ` forward_range ` ](/w/cpp/ranges/forward_range "cpp/ranges/forward range") . 

` join_view ` models [ ` bidirectional_range `
](/w/cpp/ranges/bidirectional_range "cpp/ranges/bidirectional range") when:

  * [ ranges::  range_reference_t  ](http://en.cppreference.com/w/cpp/ranges/iterator_t) < V  > is a reference type, 
  * V  models [ ` bidirectional_range ` ](/w/cpp/ranges/bidirectional_range "cpp/ranges/bidirectional range") , and 
  * [ ranges::  range_reference_t  ](http://en.cppreference.com/w/cpp/ranges/iterator_t) < V  > models both [ ` bidirectional_range ` ](/w/cpp/ranges/bidirectional_range "cpp/ranges/bidirectional range") and [ ` common_range ` ](/w/cpp/ranges/common_range "cpp/ranges/common range") . 

` join_view ` models [ ` common_range ` ](/w/cpp/ranges/common_ran