¿Cuál es la diferencia entre default_value e implicit_value en boost:: program_options?
boost-program-options (2)
Esa es la pregunta. ¿Por qué debería usar implicit_value sobre default_value y viceversa?
¡Gracias!
Si recuerdo bien, la diferencia surge con una opción que permite algo como -X=Y
(donde "Y" podría ser, por ejemplo, un número). El valor predeterminado es lo que obtienes si el usuario no ha ingresado un -X
en la línea de comando. Un valor implícito es lo que obtiene si el usuario ingresa -X
en la línea de comando sin especificar un valor.
Considere, por ejemplo, gcc, que admite niveles de optimización de 0 a 3 (IIRC). Si no especifica -O
en absoluto, su valor predeterminado es -O0
(es decir, la optimización está desactivada). Si especifica -O
(sin número), obtiene el valor implícito, equivalente a -O1
. También puede especificar -O1
explícitamente, o puede especificar -O2
o -O2
.
default_value()
es el valor que se colocará en variables_map
si el usuario no especificó otro valor:
./a.out # implies width=75 if that''s the default_value for width
./a.out --width=80 # default_value not used
implicit_value()
es el valor que se usará si el usuario especifica la opción pero sin un valor adyacente.
./a.out --width # implies width=75 if that''s the implicit_value for width
./a.out --width=80 # implicit value not used
Si usa implicit_value
entonces, en las opciones cortas de las opciones de línea de comando, el usuario debe especificar el valor inmediatamente después de la opción:
./a.out -w80 # implicit_value not used
./a.out -w 80 # wrong: 80 parsed as extra arg if implicit_value is defined