为什么 std::tuple 调用 operator <=> 两次?

问题描述

以下代码调用运算符 两次,参数颠倒。但为什么?

GCC 10.2 和 clang 12 似乎都在使用 libstdc++-10,其 确实提供运算符 ,因此它似乎不是缺少标准库支持的情况,我的代码必须不正确.如何解决?

#include <tuple>
#include <compare>
#include <iostream>

struct X {
    int i;
    auto operator <=>(X const& other) const {
        std::cout << this << " <=> " << &other << std::endl;
        return i <=> other.i;
    }
};

int main() {
    std::tuple{X{42}} <=> std::tuple{X{42}};
}

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)