std::next_permutation

Would that do?