operator& 那 returns 一个 int 并在 2 个向量上运行?

operator& that returns an int and operates on 2 vectors?

我想在两个 std::vector<int> 之间定义一个 & 运算符。此运算符应按位将两个向量的每个元素放在一起,并且 return 结果向量的非零分量的数量。

但是,如果我定义 int operator&(const std::vector<int> &lhs, const std::vector<int> &rhs),编译器不喜欢它并且需要 operator& 到 return 一个布尔值。这实际上是 operator& 的限制吗?

I would like to define an & operator between two std::vector<int>.

你可能不会(至少不是全局的;理论上它可以在自定义命名空间中完成,但我建议不要这样做)。没有用户定义类型参数的标准模板的运算符重载保留给标准库。

我建议改为编写常规函数。

Any idea why there's that restriction?

因为此限制允许标准库更改和添加委员会希望的任何运算符重载,而不会破坏先前定义良好的程序,这些程序具有自己的冲突重载(由于不允许定义此类重载)。


operator& to return a boolean. Is this actually a restriction with operator&?

没有。这其实不是二元运算符&的限制。它可能 return int.