¿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