为什么非成员和模板化运算符在语法上是正确的,但在 C++ 中不起作用

问题描述 投票:0回答:1

我发现以下内容在语法上是正确的:

#include <iostream>
using namespace std;
template<class T> bool operator<= (const T& left, const T& right)
{
  cout<<"overloaded"<<endl;
  return left<=right;
}


int main()
{
    cout<<(10<=5)<<endl;
    return 0;
}

但是好像从来没有被调用过。

c++
1个回答
0
投票

要调用重载运算符,至少一个操作数需要具有类或枚举类型:

如果表达式中运算符的操作数不具有类或枚举类型,则假定该运算符是内置运算符并根据 [expr.compound] 进行解释。

- [over.match.oper] p1

© www.soinside.com 2019 - 2024. All rights reserved.