Я не знаю ни одного, но это должно быть достаточно легко реализовать. Внутренне вы можете представить перестановку в виде вектора, например, (1 3 4 2 7 5 6) является разрешением 1-7 отправки 1-> 1, 2-> 3, 3-> 4, 4-> 2 и т. Д. Или в виде набора циклов, например (1) (2 3 4) (5 7 6) и реализуйте операции в соответствии с ними. Предположительно, аргумент шаблона будет размером группы перестановок.