Boost logo

Boost Users :

Subject: Re: [Boost-users] Boost program_options
From: Vladimir Prus (vladimir_at_[hidden])
Date: 2009-08-22 02:22:40


Steve Nolen wrote:

> in program_options::parse_command_line - why can't the the argument
> "argv" be of type 'const charT*' rather than 'charT*'?
>
> i ask because our unit tests were giving a bunch of errors because they
> were written like this..
>
> vector< char* > cmdLine;
> cmdLine.push_back( "someExec" );
> cmdLine.push_back( "--optflag1" );
> cmdLine.push_back( "value1" );
> etc.
>
> then...
> char ** argv = &cmdLine[ 0 ];
>
> then passing this to parse_command_line. when we compile under g++ 4.x
> we get warnings that assigning string literals to char* is a deprecated
> conversion. Actually I agree with the rationale, but this leaves me
> with a problem calling parse_command_line. Is it going to change any of
> these values?

No, it's not actually changing anything.

> I know the c standard calls for the argv in main's prototype to be
> non-const, but why can't parse_command_line be more restrictive?

Because it that case, you won't be able to pass main's argv to parse_command_line.

- Volodya


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net