46constexpr bool is_permutation(Iterator1 first1, Iterator1 last1, Iterator2 first2, Iterator2 last2, BinaryPred pred) {
48 "Iterator must be forward_iterator");
50 for (; first1 != last1 && first2 != last2; ++first1, ++first2) {
51 if (!pred(*first1, *first2)) {
56 if (first1 == last1 && first2 == last2) {
59 if (first1 == last1 || first2 == last2) {
63 for (Iterator1 i = first1; i != last1; ++i) {
64 bool already_counted =
false;
65 for (Iterator1 j = first1; j != i; ++j) {
67 already_counted =
true;
71 if (!already_counted) {
73 for (Iterator2 j = first2; j != last2; ++j) {
84 for (++j; j != last1; ++j) {