Boost logo

Boost :

From: Thorsten Ottosen (nesotto_at_[hidden])
Date: 2004-03-19 08:41:09

Hi again,

> Section "Tutorial"
> ------------------------
> 1. I don't like that the example hardcodes strings.

Could you explain?

const char* help = "help";

would enable the compiler to catch spell-errors in the constants.

> 2. each line should have a comment about what it does.

Actually, that would duplicate explanations that are already in the
Don't you think?
I'm in doubt :-) I do like comments because they can easily be compared to
code; when you're reading
block text, it can be harder to focus on where the comments apply.

> 9. Could this way of specifying composing()/default_value() be of any use
> option += option<int>( "xx", "xx msg" ), option_with_default<int>( ""yy",
> var_name, 0, "yy msg" ),
> option_with_compose< vector<string> >( "zz", "zz msg" );
> ?.

I think that syntantically, it requires the same number (or even larger)
number of characters. Besides, what if you want to specified both default
value and 'composing' flags? options_with_default_and_compose looks too

yeah, then what about

option += option<int>( ""xx"", var_name, compose_flag | other_flag )

? That use of flags might be more idiomatic.

> 10. This
> po::options_description cmdline_options;
> cmdline_options.add(generic).add(config).add(hidden);
> might be
> po::options_description cmdline_options;
> cmdline_options += generic, config, hidden;
> ?

Interesting! I just found some-years-old code of mine which provides support
for such initialization. It worked for vectors, like:

   v << 1, 2, 3, 4, 5, 6;

but can be easily used for +=, too. I'm just not sure this is justified

Actually, one could choose to use my assign library if it gets accepted.
You would probably only have to write one overload of operator+= so
it can recognize your types. There is also another use. Let's say you
make a function add():

program_options po;

add( po )( "xx", df, "xx msg)(...)(...)

that should work ou of the box with different tuplesizes. Making add() and
is about the same amount of work, probably 3-4 four lines each.



Boost list run by bdawes at, gregod at, cpdaniel at, john at