我的问题是,将prvalue移动(或不移动)到相应地采用通用引用T&的catch-all函数模板中是否有意义&在其签名中。此外,我还想知道复制-移动-删除/RVO是否在这一决策中发挥了作用。
问题: 引用折叠是否会导致使用T&调用foo&(右值参考)带或不带std::move,RVO对其有影响吗(或对RVO有影响)?
template < typename T > void foo(T&& arg) { //Whatever.. } A func() { A m; return m; } // called anywhere you like foo(std::move(func()));
提前感谢 山姆
那个 move 除了让编译器、优化器和代码的读者做更多无意义的工作之外,没有任何效果。
move
不要这样做。