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