Subject: Re: [Boost-bugs] [Boost C++ Libraries] #3813: program_options::options_description.add() permits duplicate options
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2011-12-16 09:23:24
#3813: program_options::options_description.add() permits duplicate options
---------------------------------------------------------+------------------
Reporter: Matthew Wesley <weslem-boosttrac@â¦> | Owner: s_ochsenknecht
Type: Bugs | Status: new
Milestone: Boost 1.42.0 | Component: program_options
Version: Boost 1.41.0 | Severity: Problem
Resolution: | Keywords:
---------------------------------------------------------+------------------
Comment (by Ralph van Etten <ralph@â¦>):
This bug still exists in 1.48.0, the documentation says it will throw
duplicate_variable_error but this exception is never thrown anywere.
I needed this functionality but I was wondering if it can be added to the
library without breaking other code using program_options.
For instance, program_options/test/exception_test.cpp depends on
add_options() not to throw an exception (even though the documentation
says it will throw and exception as it adds the same option twice) to test
the ambiguous_option exception.
It seems to me duplicate_variable_error and ambiguous_option are the same
kind of error but thrown at different times. The first is (should be)
thrown when the same option is added twice. The latter is thrown only
after parsing/storing the command line '''and''' the option is actually
used on the command line.
Is this behavior intentional?
I prefer the add_options() function to throw an exception (or even assert)
when a duplicate option is added because IMHO it is an error which should
be solved by the programmer before the program can actually run.
However, fixing this might break a lot of code so at least the
documentation should be updated and the duplicate_variable_error should be
removed.
I can create a patch for either solution, but I am not sure which one is
preferred.
-- Ticket URL: <https://svn.boost.org/trac/boost/ticket/3813#comment:2> Boost C++ Libraries <http://www.boost.org/> Boost provides free peer-reviewed portable C++ source libraries.
This archive was generated by hypermail 2.1.7 : 2017-02-16 18:50:08 UTC