如何比较自定义类的std :: variant?

时间:2018-11-02 02:04:35

标签: c++ std std-variant

1。这是我的课程:

struct SymbolToken {
    std::string name;
};

struct QuoteToken {
};

struct ConstantToken {
    int value;
};

2。我有以下typedef:

typedef std::variant<SymbolToken, QuoteToken, ConstantToken> Token;

3。我想写一个断言:

assert(Token{ConstantToken{4}} == Token{ConstantToken{4}}) // fine
assert(Token{ConstantToken{3}} == Token{ConstantToken{4}}) // exception

我该如何实施?

1 个答案:

答案 0 :(得分:1)

对包含的类型实施==

对于Quote,始终返回true。

出于理智的考虑,可能还会实施!=