The line attempting to add_options() of type std::optional<string> results in a compile error. does boost::program_options not support this type? how are optional options managed w/ boost::program_options?
#include <iostream>
#include <optional>
using namespace std;
#include <boost\program_options.hpp>
using namespace boost;
int main(int argc, const char* argv[])
{
cout << "Hello World\n" << boolalpha;
program_options::options_description options_description("options");
options_description.add_options()
("help", "please help me get this code to compile w/o error . the line below needs to be commented out for a clean compile . does boost not permit an options optional<> type ? Thank You Kindly")
("optional string", program_options::value<std::optional<string>>, "this option is optional")
;
}
expected clean compile and boost::program_options to support std::optional<> type
You forgot to call
value<>().Besides, optional options are represented by either
variable_mapoption_description) stored inside thevariable_mapI explained the background in a similar situation here: Using Boost::optional with ->multitoken and/or ->composing()
Of course, you can insist in your case, e.g. because you want to supply
boost::noneas the default value (just making things up for the story-line, albeit far-fetched). In that case, I suggestboost::optionalas it enjoys library support:Live On Coliru
If you must have
std::optional<>support you'll have to add it yourself: Using boost::program_options with std::optional