比较std :: variant类型实例

其余的部分

这是我的代码:

struct A{};
struct B{};
typedef std::variant<A, B> Record;

Record Get() {
    return Record {A()};
}

void Test() {
    if (Get() == Record{A()}) {

    }
}

我收到一个错误:

在函数模板专门化'std :: __ 1 :: operator == <A,B>'的实例化中,没有匹配的函数来调用类型为'std :: __ 1 :: equal_to'的对象

为什么会出现错误,如何将函数的结果与进行比较Record{A()}

斯蒂芬·纽厄尔

您需要为std::variant可以容纳的每种类型提供相等运算符

bool operator == (A const &lhs, A const &rhs) {
    return true;
}

bool operator == (B const &lhs, B const &rhs) {
    return true;
}

完整示例:https//gcc.godbolt.org/z/rjTfqE

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何迭代std :: variant的类型?

为什么不允许std :: variant与它的替代类型之一相等比较?

std :: variant与内部std :: nullptr_t的比较

返回类型std :: optional <std :: variant <... >>

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

std :: variant和incomplete类型:如何工作?

按std :: variant中的类型获取索引

在编译时获取std :: variant类型

将std :: variant转换为模板类实例的std :: tuple

std :: bind到包含多种std :: function类型的std :: variant

从std :: variant到std :: visit的可能类型返回值

std :: map和std :: variant的不完整类型

C ++获取当前类型为std :: typeindex的std :: variant

std::visit 不能推导出 std::variant 的类型

C ++中`std :: sort`比较器的不同类型

有趣的汇编,用于比较std :: primitive类型的可选

使用类型超集将std :: variant转换为另一个std :: variant

std :: variant反射。我如何知道std :: variant分配了哪种类型的值?

如何多态地使用替代类型的std :: variant

如何检查std :: variant是否可以容纳某种类型

std :: variant可以定义多少种类型?

实现类似std :: variant的类时存储类型标记很麻烦

无法在std :: variant中采用相同类型

在std :: variant中保存的类型上调用<<运算符?

为什么允许 std::variant 多次持有相同的类型?

预定义类型列表传递给std :: variant

更改类型后,失去对std :: variant对象的引用

如何将对象实例的类型与通用类型进行比较?

使用C ++ 20 <=>将std :: variant与int比较不是常量表达式