答案 0 :(得分:1)
您不应该返回右值引用,您应该返回一个值。此外,您不应同时指定成员和一个免费的运算符+。我很惊讶甚至编译。
编辑:
r = v1 + v2 + (v3 + v4) + v5;
当您执行两个子计算时,可能只有一个临时值?那是不可能的。您无法重新编写标准并更改此标准。
你只需要相信你的用户做一些不完全愚蠢的事情,比如编写上面的代码行,并期望只有一个临时代码。
答案 1 :(得分:1)
我建议在N3225的第21章中找到的basic_string运算符+()之后对代码进行建模。