|
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