std::indirectly_movable
From cppreference.com
                    
                                        
                    
                    
                                                            
                    |   Defined in header  <iterator>
  | 
||
|   template<class In, class Out> concept indirectly_movable =  | 
(since C++20) | |
The indirectly_movable concept specifies the relationship between an indirectly_readable type and a type that is indirectly_writable. The indirectly_writable type must be able to directly move the object that the indirectly_readable type references.
See also
|    (C++20)  | 
  specifies that values may be moved from an indirectly_readable type to an indirectly_writable type and that the move may be performed via an intermediate object  (concept)  | 
|    (C++20)  | 
  specifies that values may be copied from an indirectly_readable type to an indirectly_writable type  (concept)  |