Недавно я обнаружил недокументированную функцию boost::program_options
, а именно, что он принимает "*" в качестве специального подстановочного знака, который позволяет объявлять группу параметров с одним и тем же префиксом, например:
configOptions.add_options()
("item_*", value<int>(), "items");
Это объявление работало как ожидалось, и было признано item_1
, item_3
и т.д., отвергая неизвестные параметры.
Ну, теперь вопрос в том, как написать специальную функцию проверки
который заполнит карту с ключом опций и ее значением, например:
map<string, int> itemsMap;
options_description items("items options");
items.add_options()
("item_*",value<map<string, int>>(&itemsMap)->multitoken(), "items")
;
Мой вопрос: как мне получить ключ от проверяемой опции из функции validate()?
template <typename T> void validate(boost::any& v, const std::vector<std::string>& values, map<string, T> *, int)