获取boost :: variant

时间:2016-07-11 02:37:38

标签: c++ serialization boost-variant

我们可以使用get<i>(var)来获取boost :: variant的ith类型,其中i通常是编译时已知的常量。但是,在某些情况下,i仅在运行时期间已知。例如:

void do_process(int i, boost::variant<int, double, string>& var) {
  // How can I get the underlying type of var based on i?
}

这里的目的是实现序列化/反序列化接口,而对于序列化,我实际上可以使用visitor因为已知序列化的对象。对于deserialization,看起来我能做的唯一方法是从类型索引(var.which())和存储数据中提取数据到基础类型。

0 个答案:

没有答案