0
作为标题是相当说明性的,如何迭代boost::variant<std::vector<int>, std::vector<string>>
变量的最佳方法?如何迭代boost :: variant <std :: vector <int>,std :: vector <String>>?
说,我有一个结构:
struct foobar{
enum typeOfVariant {intVariant, StringVariant}
boost::variant<std::vector<int>, std::vector<String>> variable;
}
,我接受在某一点与保证该枚举corelated从变异类型。
为了实现也许是这样的:
boost::variant<std::vector<int>, std::vector<string>> var;
for (auto t in var)
{
//do something
}
^这可能是理想的方式。
或者强制转换为std::vector<int>
或std::vector<string>
,基于枚举类型?
'std :: visit'有什么问题? – Yakk
@Yakk它没有提升?根据文档,Boost的版本(名为'apply_visitor')还需要'result_type' typedef,除非你是C++ 14。 –
** - 1 **呈现的代码是**而不是真实代码**,例如缺少分号。另外“枚举与变体类型相关联”。是没有意义的:一个类型不能与动态值相关联。除了所有误导性的东西,问题只是如何访问'boost :: variant',**文档**显示了这一点。 –