Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
General description
This is a step back from what we currently have so we can:
std::any
Technical details
Arg
now only hasname
,help
, andrequired
and becomes an aggregateArgInfo
ArgValue
stores astd::string
instead ofstd::any
operator T
(see discussion)get_if_else
,value_or
, andas
inArgMap
SplitArg
becomesParsedOption
std::optional<std::string>
withstd::string
Program
:add
break intopos
,opt
, andflag
(currently lacking needed checks)add_choice_checking_to_conversion
Arg
is_flag
only needs to check if the flags container has the given nameconvert_args
becomesassign_args
src/opzioni.cpp
:split_arg
intoparse_option
count_dashes
replacesis_two_dashes
ArgumentNotFound
was not being used, so got replaced byMissingRequiredArgument
; new exceptionTooManyDashes
src/types.test.cpp
variant.cpp
by mistake, but now it's saved for later 🤷♂️ (will use it as a base for thestd::variant
implementation mentioned earlier)