The Permutable concept specifies the common requirements of algorithms that reorder elements in place by moving or swapping them.
template <class I>
concept bool Permutable =
ForwardIterator<I> &&
IndirectlyMovableStorable<I, I> &&
IndirectlySwappable<I, I>;