自我参考提升变体

时间:2015-03-10 22:31:59

标签: boost

想象一下,我有一个简单的类型定义:

typedef boost::variant<int, double> Value;

但是,现在我希望变体也拥有自己的矢量:

typedef boost::variant<int, double, std::vector<Value>> Value;

由于在定义变体时不知道,因此无法编译。关于如何做到这一点的任何建议?

1 个答案:

答案 0 :(得分:4)

不确定

typedef boost::make_recursive_variant<
       int,
       double,
       std::vector<boost::recursive_variant_> >::type Value;

请参阅"Advanced Topics: Recursive variant types"

下的文档