我的问题是,将std :: move(或不是)prvalue转换为全能函数模板是否有意义,因此需要通用参考T&&在它的签名。另外我想知道copy-move elision / RVO是否在这个决定中起作用。
问题(S): 引用崩溃会导致foo被调用T&& (右值引用)或者没有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()));
提前致谢 萨姆
答案 0 :(得分:1)
除了使编译器,优化器和代码的读者做更多无意义的工作之外,move
没有任何影响。
不要这样做。