view/value
type")  
[ lazy_split_view:: _inner_iterator_
](/w/cpp/ranges/lazy_split_view/inner_iterator "cpp/ranges/lazy split
view/inner iterator")  
[ Deduction guides ](/w/cpp/ranges/lazy_split_view/deduction_guides
"cpp/ranges/lazy split view/deduction guides")  
  
[ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/ranges/lazy_split_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
> &&  
[ ranges::  view  ](http://en.cppreference.com/w/cpp/ranges/view) < Pattern  >
&&  
[ std::  indirectly_comparable
](http://en.cppreference.com/w/cpp/iterator/indirectly_comparable) < [
ranges::  iterator_t  ](http://en.cppreference.com/w/cpp/ranges-ranges-
placeholder/iterator_t) < V  > ,  
[ ranges::  iterator_t  ](http://en.cppreference.com/w/cpp/ranges-ranges-
placeholder/iterator_t) < Pattern  > ,  
[ ranges::  equal_to  ](http://en.cppreference.com/w/cpp/ranges-functional-
placeholder/equal_to) > &&  
(  [ ranges::  forward_range
](http://en.cppreference.com/w/cpp/ranges/forward_range) < V  > ||  /*tiny-
range*/  < Pattern  > )  
class  lazy_split_view  
:  public  [ ranges::  view_interface  ](http://en.cppreference.com/w/cpp/ranges/view_interface) < lazy_split_view  < V, Pattern  >> |  (1)  |  (since C++20)   
namespace  views  {  
inline  constexpr  /* unspecified */  lazy_split  =  /* unspecified */  ;  
}  |  (2)  |  (since C++20)   
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  lazy_split  (  R  && r, Pattern  && pattern  )  ;  |  |  (since C++20)   
template  < class  Pattern  >  
constexpr  /* range adaptor closure */  lazy_split  (  Pattern  && pattern  )  ;  |  |  (since C++20)   
Helper concepts  |  |   
template  < class  R  >  
concept  /*tiny-range*/  =  
[ ranges::  sized_range
](http://en.cppreference.com/w/cpp/ranges/sized_range) < R  > &&  
requires  {  /* is-statically-constexpr-sized */  < R  > ;  }  &&  
(  [ std::  remove_reference_t  ](http://en.cppreference.com/w/cpp/types/remove_reference) < R  > ::  size  (  )  <=  1  )  ;  |  (3)  |  (  exposition only*  )   
|  |   
  
1)  ` lazy_split_view ` takes a [ ` view ` ](/w/cpp/ranges/view
"cpp/ranges/view") and a delimiter, and splits the [ ` view `
](/w/cpp/ranges/view "cpp/ranges/view") into subranges on the delimiter.

Two major scenarios are supported:

  * The view is an [ ` input_range ` ](/w/cpp/ranges/input_range "cpp/ranges/input range") , the delimiter is a single element (wrapped in a [ ` single_view ` ](/w/cpp/ranges/single_view "cpp/ranges/single view") ). 
  * The view is a [ ` forward_range ` ](/w/cpp/ranges/forward_range "cpp/ranges/forward range") , the delimiter is a [ ` view ` ](/w/cpp/ranges/view "cpp/ranges/view") of elements. 

2)  A [ RangeAdaptorObject  ](/w/cpp/named_req/RangeAdaptorObject "cpp/named
req/RangeAdaptorObject") . The expression  views  ::  lazy_split  (  e, f  )
is [ expression-equivalent ](/w/cpp/language/expressions#Expression-
equivalence "cpp/language/expressions") to  lazy_split_view  (  e, f  )  .

3)  The exposition-only concept  /*tiny-range*/  < Pattern  > is satisfied if
` Pattern ` satisfies [ ` sized_range ` ](/w/cpp/ranges/sized_range
"cpp/ranges/sized range") ,  Pattern  ::  size  (  )  is a constant expression
and suitable as a template non-type argument, and the value of  Pattern  ::
size  (  )  is less than or equal to ` 1 ` . Notably, [ ` empty_view `
](/w/cpp/ranges/empty_view "cpp/ranges/empty view") and [ ` single_view `
](/w/cp