如何比较自定义类的std::变体
How to compare std::variant of custom classes?
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。
可能还将实现!=
作为一个理智的问题。
相关文章:
- 如何比较自定义类的std::变体
- std::设置自定义比较器
- std::ranges::elements_view,用于自定义类似元组的数据
- 使用自定义比较函数使用std::sort()对矢量字符串进行排序时出现问题
- std::带有自定义缓冲区的 iostream 不允许我写入
- istream std::cin如何修改自定义istream缓冲区
- 如何在创建自定义迭代器时获得 std::p air 的第一个和第二个?
- std::shared_ptr 自定义参考计数器
- 在自定义 std::vector-like 容器中处理指针和非指针模板类型的最佳方法是什么?
- 为 std::vector 编写自定义插入函数
- 自定义 std::fstream,std::filebuf 的溢出和下溢函数未为每个字符调用
- 对自定义类使用 std::hash<uint64_t>
- 我的自定义使用 std::unordered_map 的性能非常慢
- 是否可以将 std::basic_ifstream 和 std::basic_ofstream 与自定义缓冲区一起使用?
- C++17 和更新的 std::分配器是否适用于动态数量的自定义堆?
- 如何在 std::getline 中自定义分隔符
- C# HashSet VS C++ std::unordered_set 使用自定义类键。C++慢...不可能。如何实现 C# 的速度?
- 如何将自定义特征张量类存储到 std::vector 中?
- 我可以对 std::array 使用自定义分配器来获取安全加密密钥吗?
- std::tuple 的自定义哈希不适用于unordered_set