Недавно я начал использовать boost::program_options
и нашел, что это очень удобно. Тем не менее, есть одна вещь, которую я не смог правильно кодировать:
Я хотел бы перебрать все параметры, которые были собраны в boost::program_options::variables_map
, чтобы выводить их на экран. Это должно стать удобной функцией, которую я могу просто вызвать, чтобы перечислить все параметры, которые были установлены без необходимости обновлять функцию, когда я добавляю новые параметры или для каждой программы.
Я знаю, что я могу проверять и выводить отдельные параметры, но, как сказано выше, это должно стать общим решением, которое не обращает внимания на фактические параметры. Я также знаю, что я могу перебирать содержимое variables_map
, поскольку это просто расширенный std::map
. Затем я мог проверить тип, содержащийся в сохраненной переменной boost::any
, и использовать .as<>
, чтобы преобразовать его в соответствующий тип. Но это означало бы кодирование длинного блока переключения с одним случаем для каждого типа. И это не похоже на хороший стиль кодирования для меня.
Итак, вопрос в том, есть ли лучший способ перебора этих параметров и вывода их?