随着移动语义的引入,你是否只能将temporaries绑定到const引用更改?非const似乎也延长了生命周期。
A getA() { return A();}
A & aref = getA(); //OK
string & str = string("h") + string("i"); //OK again
这是使用msvc,在主要退出之前不会调用A的析构函数。
答案 0 :(得分:6)
不,规则是相同的,不允许将rvalue绑定到非const左值引用。 MSVC正在使用(危险)扩展。