Параметры программы Boost со значениями по умолчанию всегда присутствуют при использовании vm.count ()

Я пытался проверить свои переданные параметры с помощью boost :: program_options. Моя команда имеет несколько режимов, каждый из которых имеет связанные параметры, которые можно указать. Что я пытаюсь сделать, так это убедиться, что эти связанные параметры передаются с режимом, то есть

unicorn --fly --magic-wings-threshold

где - fly - это режим, а - magic-wings-threshold - это связанный параметр. Я заметил, что если - magic-wings-threshold имеет значение по умолчанию, например

("magic-wings-threshold,w", po::value<double>(&wings_thresh)->default_value(0.8, "0.8"),
           "Magic wings maximum power"
)

, то я не могу использовать

if (vm.count("magic-wings-threshold")( {
    // do stuff
}

, чтобы определить, передал ли пользователь этот параметр.

Похоже, что параметры значений по умолчанию всегда передаются и обнаруживаются в vm.count () . Кто-нибудь знает обходной путь или альтернативу?

15
задан argoneus 8 February 2012 в 20:06
поделиться