我的问题是将 std::move (或不) prvalue 放入一个包罗万象的函数模板中是否有意义,该模板相应地在其签名中采用通用引用 T&& 。另外我想知道复制移动省略/RVO 是否在这个决定中发挥了作用。
问题:引用折叠是否会导致使用 T&&(右值引用)调用带有或不带 std::move 的 foo 并且 RVO 对此有任何影响(或对 RVO 有影响)吗?
template < typename T >
void foo(T&& arg)
{
//Whatever..
}
A func()
{
A m;
return m;
}
// called anywhere you like
foo(std::move(func()));
提前感谢山姆