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

标签 c++ std std-variant

1.这是我的类(class):

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

我该如何实现?

最佳答案

在包含的类型上实现 ==

对于 Quote,始终返回 true。

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

关于c++ - 如何比较自定义类的 std::variant?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53111778/

相关文章:

c - 使用带有动态数组的结构指针的内存分配 (realloc) 时出错

c++ - 将一个容器的迭代器复制到另一个迭代器容器中,然后再从第一个容器中删除它

c++ - 如何使映射键具有两种不同的数据类型?

c++ - 将参数传递给函数

c++ - 使用带有自定义参数的重载删除运算符

c++ - 如何检查日期格式的有效性(例如,%d/%m/%Y-%H :%M:%S)?

c++ - 我可以让 lambda 推断出变体返回类型吗?

C++ 或 Python(也许是其他)为 C 中的控制台应用程序创建 GUI

c++ - std::optional 值的地址是否稳定?

c++ - 如何简化 std::variant 类类型