我读过一些关于 && 的论文,我只是好奇是否有:
void fnc_1(int&& p)
{
//...
}
void fnc(int&& r)
{
fnc_1(r);//am I suppose to/should I? call it like so:fnc_1(std::forward(r))
}
或者只传递“r”就足够了?
fnc_1(r)
不会编译,因为r
是一个左值,就像任何其他变量一样,无论类型如何。是的,没错,命名右值引用是左值,而不是右值。
fnc_1(std::forward(r))
也不会编译,因为std::forward
专门设计为不推断其模板参数。
要传递右值,可以使用以下任一方法:
fnc_1(std::move(r))
fnc_1(std::forward<int&&>(r))
fnc_1(std::forward<int>(r))
Using std::move
是将左值转换为右值的惯用方法,所以我建议使用它。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)