fun*_*mmy 5 c++ move-semantics c++11
在以下情况下,编译器可以自动移动函数参数v还是必须手动声明?
std::vector Filter(std::vector v);
void DoSomeStuffAndCallFilter(std::vector v)
{
// do some stuff to v
// can the compiler automatically std::move v in this call?
// ie. return Filter(std::move(v));
//
return Filter(v);
}
Run Code Online (Sandbox Code Playgroud)
在您的情况下,编译器可以在as-if规则下进行允许优化,因为它非常了解您的析构函数和复制构造函数,std::vector因此可以证明对可观察行为没有区别.
尽管如此,它仍然是"实施质量问题",并且取决于正在进行的重大优化.
| 归档时间: |
|
| 查看次数: |
313 次 |
| 最近记录: |