使用std::variant的递归类型定义



我想定义一个std::variant,它可以存储具有字符串和值的一对向量。

我想创建如下结构:

typedef std::variant<bool, int, float, std::vector<std::pair<std::string, Value>>> Value;

如何在c++ 17中做到这一点?

正如HolyBlackCat在评论中指出的那样,您需要Value是一个类型(但它可以是不完整的)才能在对中使用它。

struct Value
{
std::variant<bool, int, float, std::vector<std::pair<std::string, Value>>> data;
};

在coliru上看

最新更新