ranges::  range_value_t
](http://en.cppreference.com/w/cpp/ranges/iterator_t) < Pattern  >>

  * [ std::  common_reference_with  ](http://en.cppreference.com/w/cpp/concepts/common_reference_with) < [ ranges::  range_reference_t  ](http://en.cppreference.com/w/cpp/ranges/iterator_t) < [ ranges::  range_reference_t  ](http://en.cppreference.com/w/cpp/ranges/iterator_t) < V  >> ,    
[ ranges::  range_reference_t
](http://en.cppreference.com/w/cpp/ranges/iterator_t) < Pattern  >>

  * [ std::  common_reference_with  ](http://en.cppreference.com/w/cpp/concepts/common_reference_with) < [ ranges::  range_rvalue_reference_t  ](http://en.cppreference.com/w/cpp/ranges/iterator_t) < [ ranges::  range_reference_t  ](http://en.cppreference.com/w/cpp/ranges/iterator_t) < V  >> ,    
[ ranges::  range_rvalue_reference_t
](http://en.cppreference.com/w/cpp/ranges/iterator_t) < Pattern  >>

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

` join_with_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, 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_with_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, 
  * ` V ` ,  [ ranges::  range_reference_t  ](http://en.cppreference.com/w/cpp/ranges/iterator_t) < V  > , and ` Pattern ` each 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  > and ` Pattern ` each model [ ` common_range ` ](/w/cpp/ranges/common_range "cpp/ranges/common range") . 

` join_with_view ` models [ ` common_range ` ](/w/cpp/ranges/common_range
"cpp/ranges/common range") when:

  * [ ranges::  range_reference_t  ](http://en.cppreference.com/w/cpp/ranges/iterator_t) < V  > is a reference, 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") and [ ` common_range ` ](/w/cpp/ranges/common_range "cpp/ranges/common range") . 

##  Contents

  * 1  Member functions 
    * 1.1  Inherited from  std::ranges::view_interface 
  * 2  Deduction guides 
  * 3  Nested classes 
  * 4  Example 
  * 5  See also 

  
---  
  
###  [ [ edit
](/mwiki/index.php?title=cpp/ranges/join_with_view&action=edit&section=1 "Edit
section: Member functions") ]  Member functions

[ (constructor)  ](/w/cpp/ranges/join_with_view/join_with_view "cpp/ranges/join with view/join with view") (C++23)  |  constructs a ` join_with_view `   
(public member function)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/ranges/adaptor/dsc_constructor&action=edit)  
---|---  
[ base  ](/w/cpp/ranges/join_with_view/base "cpp/ranges/join with view/base") (C++23)  |  returns a copy of the underlying (adapted) view   
(public member function)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/ranges/adaptor/dsc_base&action=edit)  
[ begin  ](/w/cpp/ranges/join_with_view/begin "cpp/ranges/join with view/begin") (C++23)  |  returns an iterator to the beginning   
(public member function)  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/ranges/adaptor/dsc_begin&action=edit)  
[ end  ](/w/cpp/ranges/join_with_view/end "cpp/ranges/join with view/end") (C++23)  |  returns an iterator or a sentinel to the end   
(public member function)  [ [edit]
](https://en.cppreference.com/mwi