Дано:
typedef boost::variant<std::vector<int8>, std::vector<std::string> > Container;
Как я могу инициализировать c
как один лайнер?
std::vector<std::string> v = boost::assign::list_of<std::string>("stringValue");
Container c(v);
Это должно сделать — явным образом приведите результат list_of к типу, который вы хотите сохранить в варианте:
Container c(vector<string>(list_of<string>("stringValue")));
Или еще лучше — используйте C ++ 11:
Container c{ vector<string> {"stringValue1", "stringValue2"}};
Других решений пока нет …