如何比较自定义类的std::变体

How to compare std::variant of custom classes?

本文关键字:std 自定义 变体 何比较 比较      更新时间:2023-10-16

1.这是我的类:

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

我该如何实现它?

在包含的类型上实现==

对于报价,始终返回true。

可能还将实现!=作为一个理智的问题。