std::default_sentinel_t,std::default_sentinel(3)

NAME
std::default_sentinel_t,std::default_sentinel - std::default_sentinel_t,std::default_sentinel

Synopsis
   Defined in header <iterator>
   struct default_sentinel_t { }; (1) (since C++20)
   inline constexpr default_sentinel_t default_sentinel{}; (2) (since C++20)
   1) default_sentinel_t is an empty class type used to denote the end of a range. It
   can be used together with iterator types that know the bound of their range (e.g.,
   std::counted_iterator).
   2) default_sentinel is a constant of type default_sentinel_t.

Example
// Run this code
 #include <iterator>
 #include <algorithm>
 #include <list>
 #include <iostream>
 int main()
 {
     std::list<int> l{3,1,4,1,5,9,2,6};
     std::ranges::copy(std::counted_iterator(std::begin(l), 4),
         std::default_sentinel, std::ostream_iterator<int>{std::cout, " "});
 }

Output:
 3 1 4 1

See also
   istream_iterator input iterator that reads from std::basic_istream
                       (class template)
   istreambuf_iterator input iterator that reads from std::basic_streambuf
                       (class template)
   counted_iterator iterator adaptor that tracks the distance to the end of the
   (C++20) range
                       (class template)