es/view interface")  
  
[ empty  ](/w/cpp/ranges/view_interface/empty "cpp/ranges/view interface/empty") (C++20)  |  returns whether the derived view is empty. Provided if it satisfies [ ` sized_range ` ](/w/cpp/ranges/sized_range "cpp/ranges/sized range") or [ ` forward_range ` ](/w/cpp/ranges/forward_range "cpp/ranges/forward range") .   
(public member function of ` std::ranges::view_interface<D> ` )  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/ranges/view_interface/dsc_empty&action=edit)  
[ cbegin  ](/w/cpp/ranges/view_interface/cbegin "cpp/ranges/view interface/cbegin") (C++23)  |  returns a constant iterator to the beginning of the range.   
(public member function of ` std::ranges::view_interface<D> ` )  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/ranges/view_interface/dsc_cbegin&action=edit)  
[ cend  ](/w/cpp/ranges/view_interface/cend "cpp/ranges/view interface/cend") (C++23)  |  returns a sentinel for the constant iterator of the range.   
(public member function of ` std::ranges::view_interface<D> ` )  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/ranges/view_interface/dsc_cend&action=edit)  
[ operator bool  ](/w/cpp/ranges/view_interface/operator_bool "cpp/ranges/view interface/operator bool") (C++20)  |  returns whether the derived view is not empty. Provided if  [ ranges::empty ](/w/cpp/ranges/empty "cpp/ranges/empty") is applicable to it.   
(public member function of ` std::ranges::view_interface<D> ` )  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/ranges/view_interface/dsc_operator_bool&action=edit)  
[ front  ](/w/cpp/ranges/view_interface/front "cpp/ranges/view interface/front") (C++20)  |  returns the first element in the derived view. Provided if it satisfies [ ` forward_range ` ](/w/cpp/ranges/forward_range "cpp/ranges/forward range") .   
(public member function of ` std::ranges::view_interface<D> ` )  [ [edit]
](https://en.cppreference.com/mwiki/index.php?title=Template:cpp/ranges/view_interface/dsc_front&action=edit)  
  
###  [ [ edit
](/mwiki/index.php?title=cpp/ranges/lazy_split_view&action=edit&section=3
"Edit section: Nested classes") ]  Nested classes

[ _ outer_iterator  _ ](/w/cpp/ranges/lazy_split_view/outer_iterator "cpp/ranges/lazy split view/outer iterator") (C++20)  |  the iterator type   
(  exposition-only member class template*  )  
---|---  
[ _ inner_iterator  _ ](/w/cpp/ranges/lazy_split_view/inner_iterator "cpp/ranges/lazy split view/inner iterator") (C++20)  |  the iterator type of the inner range   
(  exposition-only member class template*  )  
  
###  [ [ edit
](/mwiki/index.php?title=cpp/ranges/lazy_split_view&action=edit&section=4
"Edit section: Deduction guides") ]  [ Deduction guides
](/w/cpp/ranges/lazy_split_view/deduction_guides "cpp/ranges/lazy split
view/deduction guides")

###  [ [ edit
](/mwiki/index.php?title=cpp/ranges/lazy_split_view&action=edit&section=5
"Edit section: Notes") ]  Notes

The name ` lazy_split_view ` is introduced by the post-C++20 defect report [
P2210R2 ](https://wg21.link/P2210R2) . It has the same lazy mechanism as that
of the old ` split_view ` before change.

###  [ [ edit
](/mwiki/index.php?title=cpp/ranges/lazy_split_view&action=edit&section=6
"Edit section: Example") ]  Example

Run this code

    
    
    #include <algorithm>
    #include <iostream>
    #include <ranges>
    #include <string_view>
     
    auto print = [](auto const& view)
    {
        // `view` is of std::views::lazy_split_view::__outer_iterator::value_type
     
        for ([std::cout](http://en.cppreference.com/w/cpp/io/cout) << "{ "; const auto element : view)
            [std::cout](http://en.cppreference.com/w/cpp/io/cout) << element << ' ';
        [std::cout](http://en.cppreference.com/w/cpp/io/cout) << "} ";
    };
     
    int main()
    {
        constexpr static auto source = {0, 1, 0, 2, 3, 0, 4, 5, 6, 0, 7, 8, 9};
        constexpr int