如何从函数返回 &&对象?

How to return && object from function?

本文关键字:对象 返回 函数      更新时间:2023-10-16

我的TTempTable类带有Move Symantics。我写了

TTempTable&& MyFunction() {
   TTempTable tmp = f(...);
   ...
   return std::move(tmp);
}

并且没有编译器错误。

这是正确的吗?

不,这是不正确的。

您正在返回对本地变量的引用。该参考是悬挂的。

喜欢任何悬空的东西,编译器不会[总是]为您诊断。

按值返回,然后删除std::move(它是多余的并抑制了Elision(。