w/iterator/iterator")  
[ join_with_view:: _iterator_ ::operator*
](/w/cpp/ranges/join_with_view/iterator/operator* "cpp/ranges/join with
view/iterator/operator*")  
[ join_with_view:: _iterator_ ::operator++  
join_with_view:: _iterator_ ::operator++  (int)  
join_with_view:: _iterator_ ::operator--  
join_with_view:: _iterator_ ::operator--  (int)
](/w/cpp/ranges/join_with_view/iterator/operator_arith "cpp/ranges/join with
view/iterator/operator arith")  
[ operator==(join_with_view:: _iterator_ )
](/w/cpp/ranges/join_with_view/iterator/operator_cmp "cpp/ranges/join with
view/iterator/operator cmp")  
[ iter_move  (join_with_view:: _iterator_ )
](/w/cpp/ranges/join_with_view/iterator/iter_move "cpp/ranges/join with
view/iterator/iter move")  
[ iter_swap  (join_with_view:: _iterator_ )
](/w/cpp/ranges/join_with_view/iterator/iter_swap "cpp/ranges/join with
view/iterator/iter swap")  
[ Sentinel ](/w/cpp/ranges/join_with_view/sentinel "cpp/ranges/join with
view/sentinel")  
[ join_with_view:: _sentinel_ :: _sentinel_
](/w/cpp/ranges/join_with_view/sentinel/sentinel "cpp/ranges/join with
view/sentinel/sentinel")  
[ operator==  (join_with_view:: _sentinel_ )
](/w/cpp/ranges/join_with_view/sentinel/operator_cmp "cpp/ranges/join with
view/sentinel/operator cmp")  
  
[ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/ranges/join_with_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, [ ranges::
forward_range  ](http://en.cppreference.com/w/cpp/ranges/forward_range)
Pattern  >  
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
>> and  
[ ranges::  view  ](http://en.cppreference.com/w/cpp/ranges/view) < Pattern  >
and  
/* ranges::range_reference_t<V> and Pattern  
have compatible elements (see below) */  
class  join_with_view  
:  [ ranges::  view_interface  ](http://en.cppreference.com/w/cpp/ranges/view_interface) < join_with_view  < V, Pattern  >> |  (1)  |  (since C++23)   
namespace  views  {  
inline  constexpr  /* unspecified */  join_with  =  /* unspecified */  ;  
}  |  (2)  |  (since C++23)   
Call signature  |  |   
template  < [ ranges::  viewable_range
](http://en.cppreference.com/w/cpp/ranges/viewable_range) R,  class  Pattern
>  
requires  /* see below */  
constexpr  [ ranges::  view  ](http://en.cppreference.com/w/cpp/ranges/view) auto  join_with  (  R  && r, Pattern  && pattern  )  ;  |  |  (since C++23)   
template  < class  Pattern  >  
constexpr  /* range adaptor closure */  join_with  (  Pattern  && pattern  )  ;  |  |  (since C++23)   
|  |   
  
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, with every element of the delimiter inserted in between elements of
the view. The delimiter can be a single element or a view of elements.

2)  [ RangeAdaptorObject  ](/w/cpp/named_req/RangeAdaptorObject "cpp/named
req/RangeAdaptorObject") . The expression  views  ::  join_with  (  e, f  )
is [ expression-equivalent ](/w/cpp/language/expressions#Expression-
equivalence "cpp/language/expressions") to  join_with_view  (  e, f  )  for
any suitable subexpressions  e  and  f  .

[ ranges::  range_reference_t
](http://en.cppreference.com/w/cpp/ranges/iterator_t) < V  > and ` Pattern `
have compatible elements if all of the following concepts are modeled:

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