【发布时间】:2019-10-13 01:21:15
【问题描述】:
我有 TTempTable 带有移动语义的课程。我写了
TTempTable&& MyFunction() {
TTempTable tmp = f(...);
...
return std::move(tmp);
}
并且没有编译器错误。
这是正确的吗?
【问题讨论】:
标签: c++ return-value rvalue-reference
我有 TTempTable 带有移动语义的课程。我写了
TTempTable&& MyFunction() {
TTempTable tmp = f(...);
...
return std::move(tmp);
}
并且没有编译器错误。
这是正确的吗?
【问题讨论】:
标签: c++ return-value rvalue-reference
不,不正确。
你是returning a reference to a local variable。该引用悬而未决。
就像任何悬而未决的东西一样,编译器不会 [总是] 为您诊断它。
按值返回,并删除std::move (it's redundant and inhibits elision)。
【讨论】: