C++ 为什么是C++;标准明确规定,对于内置赋值运算符,不引入左操作数的临时值?

C++ 为什么是C++;标准明确规定,对于内置赋值运算符,不引入左操作数的临时值?,c++,language-lawyer,assignment-operator,C++,Language Lawyer,Assignment Operator,C++标准明确规定,对于内置赋值运算符,不引入左操作数的临时值。不过,我认为这是没有必要的。引用N4296§13.3.1.2/4: 对于内置赋值运算符,左操作数的转换 限制条件如下: (4.1)不引入临时变量来保存左操作数,并且 (4.2)-没有用户定义的转换应用于左操作数,以实现与最左操作数的类型匹配 内置候选项的参数 我理解第二条规则(参见示例),但第一条规则对我来说似乎并不重要。§13.6中描述了所有内置运算符,只有三个赋值运算符(第18、19、20段)。它们的第一个参数始终是对非常量类型

C++标准明确规定,对于内置赋值运算符,不引入左操作数的临时值。不过,我认为这是没有必要的。引用N4296§13.3.1.2/4:

对于内置赋值运算符,左操作数的转换 限制条件如下:

(4.1)不引入临时变量来保存左操作数,并且

(4.2)-没有用户定义的转换应用于左操作数,以实现与最左操作数的类型匹配 内置候选项的参数

我理解第二条规则(参见示例),但第一条规则对我来说似乎并不重要。§13.6中描述了所有内置运算符,只有三个赋值运算符(第18、19、20段)。它们的第一个参数始终是对非常量类型的引用,并且此类引用不能绑定到临时变量