赋值运算符应返回所属类的非 const 左值引用
6.8.3 ID_nonStdAssignmentRetType
赋值运算符应返回所属类不受 const 关键字限定的左值引用,以便调用者使用并满足泛型编程的要求。
重载赋值运算符的行为应与内置赋值运算符一致,使类对象的赋值表达式可以灵活地作为各种语句的子表达式,这也是“泛型程序设计”的必要条件,使同一套代码既可以适应普通变量,也可以适应类对象。
本规则是 ID_illOperatorRetType 的特化,对复合赋值运算符也有相同的要求。
示例:
struct A {
void operator = (const A&); // Non-compliant
void operator = (A&&); // Non-compliant
};
应改为:
struct A {
A& operator = (const A&); // Compliant
A& operator = (A&&); // Compliant
};
相关
依据
ISO/IEC 14882:2003 12.8(10)
ISO/IEC 14882:2011 12.8(22)