是否将纯右值移动到函数模板 uref 参数中?
Move a prvalue into function template uref argument or not?
我的问题是将纯右值 std::move(或不)放入一个包罗万象的函数模板中是否有意义,该模板相应地在其签名中采用通用引用 T&&。另外我想知道复制移动 elision/RVO 是否在这个决定中发挥了作用。
问题:
将引用折叠导致 foo 被调用与 T&& (右值引用)或 w/o 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
除了让编译器、优化器和您代码的读者做更多无意义的工作外,没有任何效果。
不要这样做。
我的问题是将纯右值 std::move(或不)放入一个包罗万象的函数模板中是否有意义,该模板相应地在其签名中采用通用引用 T&&。另外我想知道复制移动 elision/RVO 是否在这个决定中发挥了作用。
问题: 将引用折叠导致 foo 被调用与 T&& (右值引用)或 w/o 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
除了让编译器、优化器和您代码的读者做更多无意义的工作外,没有任何效果。
不要这样做。