My code below did not work:
wstring config_file;
// Declare a group of options that will be
// allowed only on command line
po::options_description generic(\"Ge
Long-winded explanation: This is because the underlying typed_value
type in program_options
tries to do a lexical cast from wchar
to char
in setting the m_default_value_as_text
private member. For whatever reason, the basic_string type does not have the necessary functions to create the correct template types.
Luckily, the typed_value class has a second override for default_value and implicit_value which provides a string representation of the value. This bypasses the lexical_cast, which fixes the problem. Something like:
tvalue< tstring >()->default_value( _T( "output.png" ), "output.png" )