运算符> =重载,用于半精度格式

时间:2019-11-18 13:21:49

标签: c++ operator-overloading

我使用half.hpp头文件在程序中使用半精度格式。在此头文件运算符> =中,对于类型一半的重载如下:

inline HALF_CONSTEXPR_NOERR bool operator>=(half x, half y)
    {
        return !detail::compsignal(x.data_, y.data_) &&
            ((x.data_^(0x8000|(0x8000-(x.data_>>15))))+(x.data_>>15)) >= ((y.data_^(0x8000|(0x8000-(y.data_>>15))))+(y.data_>>15));
    }

在main.cc文件中包含half.hpp文件,代码如下:

    int main() {
    double a= 3.4;
    half b (3);
    if (a >= b) 
    .
    . 
    .
  return 0;
}

它已编译并创建了输出文件。 但是当我编写下面的代码时,遇到错误:

 int main() {
    double a= 3.4;
    half b (3);
    operator >= (a,b); 
    .
    . 
    .
  return 0;
}

error: could not convert 'b' from 'double' to 'half'

我想知道这两个代码的原因和区别吗?我找不到合乎逻辑的原因。

0 个答案:

没有答案