最初的问题与重载operator =有关,我喜欢分享我的发现,因为找到它们对我来说是非常重要的.我无法想象使用(a = b)作为左值的合理例子.在IRC和谷歌的帮助下,我发现了下一篇文章:http: //msdn.microsoft.com/en-us/magazine/cc301415.aspx
它提供了两个例子.
(a=b)=c
f(T& );
f(a=b)
Run Code Online (Sandbox Code Playgroud)
但两者都不好,我相信这是不好的做法.第二个给我同样的感觉.你能提供更好的例子吗?为什么它应该是非常数的?
CB *_*ley 11
一个很好的理由是,在标准的一类的要求之一X是在标准容器可用的是,表达式a = b必须具有类型X&(其中,a是类型的左值X和b类型是一个rvalue X).
最有可能的原因是这就是语言的原生类型的工作原理.例如:
int x = 0, y = 1, z = 2;
(x = y) = z;
Run Code Online (Sandbox Code Playgroud)
AFAIK博士,Stroustrup博士说,语言的一致性是一件好事.即用户定义的类型应该像本机类型一样.