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

How to compare std::variant of custom classes?

1.It 是我的 类:

struct SymbolToken {
    std::string name;
};

struct QuoteToken {
};

struct ConstantToken {
    int value;
};

2。我有以下类型定义:

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

3。我想写一个断言:

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

我该如何实施?

对包含的类型实施 ==

对于报价,始终return正确。

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