Зачастую в проектном коде применяются эвристические алгоритмы, подразумевающие какой-нибудь перебор чисел или объектов в контейнере.
В данном случае речь идет о генерации всех перестановок с повторениями (permutation with repetition) или же сочетаний (combinations).
Кроме того, такие функции очень часто могут пригодится в олимпиадном программировании (хотя, очевидно, от авторов задач предполагается создавать такие функции с нуля, вручную).
Мой поинт - избавить программиста, участвующего в коммерческой разработке:
А) Писать самостоятельно C-style генерации в виде вложенных семиэтажных циклов for;
Б) Разрабатывать полноценный алгоритм, который будет работать только с контейнерами, поддерживающие RandomAccessIterator.
В) Делать код нечитаемым и дублируемым, несочетающимся с другими STL-фукнкциями
Предлагаю навязать разработчику использование стандарта для отличной совместимости с другими STL-функциями, контейнерами и сделать код более читаемым!
Как итог: добавить генерацию перестановок с повторениями (permutation with repetition) и генерацию сочетаний (combinations).