$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
Subject: Re: [Boost-users] [boost] [program options] Recommended way to specify a list of strings
From: TSalm (tsalm_at_[hidden])
Date: 2009-12-30 13:10:24
Le Wed, 23 Dec 2009 07:04:19 +0100, Vladimir Prus  
<vladimir_at_[hidden]> a écrit:
> Sanjit Jhala wrote:
>
>> How would I specify an empty vector of strings as the default value for  
>> this
>> option?
>>
>> po::value< vector<string> >()->default_value(??)
>
> Use vector<string>() as the default value.
>
Hi,
I have the same problem.
But when I'm using :
   configuration.add_options()
     ("DEFAULT.bytecompile",program_options::value< vector<string>  
>()->default_value(vector<string>()))
     ;
G++ won't compile.
Here is the complete source code :
#include <vector>
#include <boost/program_options.hpp>
int main(int argc, char** argv)
{
   using namespace std;
   using namespace boost;
   program_options::options_description configuration;
   boost::program_options::variables_map vm;
   vector<string> empty_vector;
   // Set options and default values
   configuration.add_options()
     ("DEFAULT.bytecompile",program_options::value< vector<string>  
>()->default_value(vector<string>()))
     ;
   program_options::store (
            program_options::parse_command_line(argc, argv, configuration)
          , vm );
   program_options::notify( vm );
   return 0;
}
And the error message :
/usr/include/boost/lexical_cast.hpp: In member function âbool  
boost::detail::lexical_stream<Target, Source>::operator<<(const Source&)  
[with Target = std::basic_string<char, std::char_traits<char>,  
std::allocator<char> >, Source = std::vector<std::basic_string<char,  
std::char_traits<char>, std::allocator<char> >,  
std::allocator<std::basic_string<char, std::char_traits<char>,  
std::allocator<char> > > >]â:
/usr/include/boost/lexical_cast.hpp:222:   instantiated from âTarget  
boost::lexical_cast(const Source&) [with Target = std::basic_string<char,  
std::char_traits<char>, std::allocator<char> >, Source =  
std::vector<std::basic_string<char, std::char_traits<char>,  
std::allocator<char> >, std::allocator<std::basic_string<char,  
std::char_traits<char>, std::allocator<char> > > >]â
/usr/include/boost/program_options/value_semantic.hpp:190:   instantiated  
 from âboost::program_options::typed_value<T, charT>*  
boost::program_options::typed_value<T, charT>::default_value(const T&)  
[with T = std::vector<std::basic_string<char, std::char_traits<char>,  
std::allocator<char> >, std::allocator<std::basic_string<char,  
std::char_traits<char>, std::allocator<char> > > >, charT = char]â
config_file__vector.cpp:16:   instantiated from here
/usr/include/boost/lexical_cast.hpp:151: error: no match for âoperator<<â  
in â((boost::detail::lexical_stream<std::basic_string<char,  
std::char_traits<char>, std::allocator<char> >,  
std::vector<std::basic_string<char, std::char_traits<char>,  
std::allocator<char> >, std::allocator<std::basic_string<char,  
std::char_traits<char>, std::allocator<char> > > >  
>*)this)->boost::detail::lexical_stream<std::basic_string<char,  
std::char_traits<char>, std::allocator<char> >,  
std::vector<std::basic_string<char, std::char_traits<char>,  
std::allocator<char> >, std::allocator<std::basic_string<char,  
std::char_traits<char>, std::allocator<char> > > > >::stream << inputâ
/usr/include/c++/4.3/ostream:112: note: candidates are:  
std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT,  
_Traits>::operator<<(std::basic_ostream<_CharT, _Traits>&  
(*)(std::basic_ostream<_CharT, _Traits>&)) [with _CharT = char, _Traits =  
std::char_traits<char>]
/usr/include/c++/4.3/ostream:121: note:                  
std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT,  
_Traits>::operator<<(std::basic_ios<_CharT, _Traits>&  
(*)(std::basic_ios<_CharT, _Traits>&)) [with _CharT = char, _Traits =  
std::char_traits<char>]
/usr/include/c++/4.3/ostream:131: note:                  
std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT,  
_Traits>::operator<<(std::ios_base& (*)(std::ios_base&)) [with _CharT =  
char, _Traits = std::char_traits<char>]
/usr/include/c++/4.3/ostream:169: note:                  
std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT,  
_Traits>::operator<<(long int) [with _CharT = char, _Traits =  
std::char_traits<char>]
/usr/include/c++/4.3/ostream:173: note:                  
std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT,  
_Traits>::operator<<(long unsigned int) [with _CharT = char, _Traits =  
std::char_traits<char>]
/usr/include/c++/4.3/ostream:177: note:                  
std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT,  
_Traits>::operator<<(bool) [with _CharT = char, _Traits =  
std::char_traits<char>]
/usr/include/c++/4.3/bits/ostream.tcc:97: note:                  
std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT,  
_Traits>::operator<<(short int) [with _CharT = char, _Traits =  
std::char_traits<char>]
/usr/include/c++/4.3/ostream:184: note:                  
std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT,  
_Traits>::operator<<(short unsigned int) [with _CharT = char, _Traits =  
std::char_traits<char>]
/usr/include/c++/4.3/bits/ostream.tcc:111: note:                  
std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT,  
_Traits>::operator<<(int) [with _CharT = char, _Traits =  
std::char_traits<char>]
/usr/include/c++/4.3/ostream:195: note:                  
std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT,  
_Traits>::operator<<(unsigned int) [with _CharT = char, _Traits =  
std::char_traits<char>]
/usr/include/c++/4.3/ostream:204: note:                  
std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT,  
_Traits>::operator<<(long long int) [with _CharT = char, _Traits =  
std::char_traits<char>]
/usr/include/c++/4.3/ostream:208: note:                  
std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT,  
_Traits>::operator<<(long long unsigned int) [with _CharT = char, _Traits  
= std::char_traits<char>]
/usr/include/c++/4.3/ostream:213: note:                  
std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT,  
_Traits>::operator<<(double) [with _CharT = char, _Traits =  
std::char_traits<char>]
/usr/include/c++/4.3/ostream:217: note:                  
std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT,  
_Traits>::operator<<(float) [with _CharT = char, _Traits =  
std::char_traits<char>]
/usr/include/c++/4.3/ostream:225: note:                  
std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT,  
_Traits>::operator<<(long double) [with _CharT = char, _Traits =  
std::char_traits<char>]
/usr/include/c++/4.3/ostream:229: note:                  
std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT,  
_Traits>::operator<<(const void*) [with _CharT = char, _Traits =  
std::char_traits<char>]
/usr/include/c++/4.3/bits/ostream.tcc:125: note:                  
std::basic_ostream<_CharT, _Traits>& std::basic_ostream<_CharT,  
_Traits>::operator<<(std::basic_streambuf<_CharT, _Traits>*) [with _CharT  
= char, _Traits = std::char_traits<char>]
-- Utilisant le client e-mail révolutionnaire d'Opera : http://www.opera.com/mail/