cpp/experimental/ranges/algorithm/is permutation

@1@ Returns if there exists a permutation of the elements in range  that makes the range equal to, and  otherwise.

@2@ Same as, but uses as the first source range and  as the second source range, as if using  as ,  as ,  as , and  as.

@3@ Same as, except that is defined as if by  and  is.

@4@ Same as, but uses as the first source range,  as if using  as  and  as.

Two ranges are considered equal if they have the same number of elements and, for every iterator in the range,  is true.

Return value
if the range is a permutation of the range.

Complexity
At most $O(N^{2})$ applications of the predicate and each projection, or exactly $N$ if the sequences are already equal, where.

However if is satisfied and, no applications of the predicate and projections are made.