自引用升压变体

Self-referencing boost variant

假设我有一个像这样的简单类型定义:

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

但是,现在我希望变体也包含一个向量:

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

由于在定义变体时 Value 未知,因此编译将失败。关于如何做到这一点有什么建议吗?

当然可以。

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

请参阅 "Advanced Topics: Recursive variant types"

下的文档