std::permutable
From cppreference.com
                    
                                        
                    
                    
                                                            
                    |   Defined in header  <iterator>
  | 
||
|   template< class I > concept permutable =  | 
(since C++20) | |
The concept permutable refines std::forward_iterator by adding requirements for reordering through moves and swaps.
Semantic requirements
I models permutable only if all concepts it subsumes are modeled.
See also
|    (C++20)  | 
  specifies the common requirements of algorithms that permute sequences into ordered sequences  (concept)  | 
|   (C++20)(C++20)  | 
 removes elements satisfying specific criteria (algorithm function object)  | 
|   (C++20)  | 
 removes consecutive duplicate elements in a range (algorithm function object)  | 
|   (C++20)  | 
 reverses the order of elements in a range (algorithm function object)  | 
|   (C++20)  | 
 rotates the order of elements in a range (algorithm function object)  | 
|   (C++20)  | 
 randomly re-orders elements in a range (algorithm function object)  | 
|   (C++20)  | 
 divides a range of elements into two groups (algorithm function object)  | 
|   (C++20)  | 
 divides elements into two groups while preserving their relative order (algorithm function object)  |