0

我的问题是将 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()));

提前感谢山姆

4

1 回答 1

1

除了让编译器、优化器和代码的读者做更多无意义的工作之外,这move没有任何作用。

不要这样做。

于 2018-01-23T22:49:26.350 回答