在C ++ 1y / C ++ 14标准中,哪里表示以下翻译单元格式错误?
struct S {};
void operator+(S,S,S);
错误是:
error: ‘void operator+(S, S, S)’ must take either one or two arguments
[过分]
1前缀一元运算符应由不带参数的非静态成员函数(9.3)或带一个参数的非成员函数实现。因此,对于任何前缀一元运算符@,@ x都可以解释为x.operator @()或operator @(x)。如果两种形式的运算符都已声明,则13.3.1.2中的规则确定使用哪种解释。有关后缀一元运算符++和-的说明,请参见13.5.7。
[over.binary]
1二元运算符应通过具有一个参数的非静态成员函数(9.3)或具有两个参数的非成员函数来实现。因此,对于任何二进制运算符@,x @ y都可以解释为x.operator @(y)或operator @(x,y)。如果两种形式的运算符都已声明,则13.3.1.2中的规则确定使用哪种解释。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句