问题描述
我希望这不是一个愚蠢的问题,我只是想确保我对此的理解是明确的。
如果RValue引用接收到参数:
struct A { /* move and copy constructors here... */ };
template <class T> void f1(T&&) {
}
void demo()
{
f1(A());
f1(std::move<A>(A()));
}
在我看来,它是通过引用传递的,没有应用move构造函数。
这是真的吗? 我只是想确保此处没有复制省略或其他优化。
解决方法
正确。只会调用构造函数,使您使用隐式或显式构造新对象的参数进行操作。
演示函数中的第二行是不必要的:A()
已经是prvalue。