В настоящее время у меня есть этот код:
if(!variables["width"].defaulted())
{
configTree.put(treeNames["width"], variables["width"].as<int>());
}
if(!variables["height"].defaulted())
{
configTree.put(treeNames["height"], variables["height"].as<int>());
}
if(!variables["fullscreen"].defaulted())
{
configTree.put(treeNames["fullscreen"], variables["height"].as<int>());
}
Я пытаюсь просто это. Единственное, что меня останавливает, это то, что в будущем у меня также будут переменные std :: string, что означает, что простое циклическое переключение всех значений и использование as () не сработает.
Я рассмотрел попытку использовать boost :: any for as <> (), но это не работает (множество ошибок шаблона). Я также рассмотрел наличие кортежа со значением, указывающим, какой тип он будет, затем переключался через него и вызывал соответствующий как <> (), но это кажется излишним.
Есть ли способ просто это?