使用子类型集将std :: variant转换为另一个std :: variant

时间:2019-07-10 20:30:38

标签: c++

给出类型为std::variant<A,B,C>的变量,我检查了它是否包含C。如何将其转换为std::variant<A,B>

std::variant<A,B> convert(std::variant<A,B,C> value) {
  if (std::holds_alternative<C>(value)) {
    // die.
  }

  return ... // what to do here?
}

我知道如何使用here中所述的访问者进行相反的操作(转换为超集变体),但是这种方法不适用于这种情况。

0 个答案:

没有答案