std::move_sentinel
From cppreference.com
                    
                                        
                    
                    
                                                            
                    |   Defined in header  <iterator>
  | 
||
|   template< std::semiregular S > class move_sentinel;  | 
(since C++20) | |
std::move_sentinel is a sentinel adaptor used for denoting ranges together with std::move_iterator.
Template parameters
| S | - | the type of underlying sentinel | 
Member functions
|    (C++20)  | 
  constructs a new move_sentinel (public member function)  | 
|    (C++20)  | 
   assigns the contents of one move_sentinel to another (public member function)  | 
|    (C++20)  | 
   return a copy of the underlying sentinel  (public member function)  | 
Member objects
| Member name | Definition | 
  last (private member object)
 | 
underlying sentinel, the name is for exposition only | 
Non-member functions
Notes: These functions are hidden friends of std::move_iterator and invisible to ordinary unqualified or qualified lookup.
|    compares the underlying iterator and the underlying sentinel   (function template)  | |
|    computes the distance between the underlying iterator and the underlying sentinel   (function template)  | 
Example
| This section is incomplete Reason: no example  | 
See also
|    (C++11)  | 
   iterator adaptor which dereferences to an rvalue reference   (class template)  |