Это - вопрос. Почему я использовал бы implicit_value по default_value и наоборот?
Спасибо!
Если я правильно помню, разница возникает с параметром, который позволяет что-то вроде -X = Y
(где «Y» может быть, например, числом). Значение по умолчанию - это то, что вы получите, если пользователь не ввел -X
в командной строке. Неявное значение - это то, что вы получаете, если пользователь вводит -X
в командной строке без указания значения.
Рассмотрим, например, gcc, который поддерживает уровни оптимизации от 0 до 3 (IIRC). Если вы вообще не укажете -O
, по умолчанию будет установлено значение -O0
(т.е. оптимизация отключена). Если вы укажете -O
(без номера), вы получите неявное значение, эквивалентное -O1
. Вы также можете указать -O1
явно или указать -O2
или -O3
.
default_value()
это значение, которое будет помещено в variables_map
если пользователь не указал другого значения:
./a.out # implies width=75 if that's the default_value for width
./a.out --width=80 # default_value not used
implicit_value()
это значение, которое будет использоваться, если пользователь укажет опцию, но без смежного значения.
./a.out --width # implies width=75 if that's the implicit_value for width
./a.out --width=80 # implicit value not used
Если вы используете implicit_value
, то в коротких опциях командной строки пользователь должен указать значение сразу после опции:
./a.out -w80 # implicit_value not used
./a.out -w 80 # wrong: 80 parsed as extra arg if implicit_value is defined