gpt4 book ai didi

c++ - 右值引用和完美转发

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:20:40 26 4
gpt4 key购买 nike

我读过一些关于 && 的论文,我只是好奇是否有:

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))

使用 std::move 是将左值转换为右值的惯用方法,因此我建议使用它。

关于c++ - 右值引用和完美转发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6862639/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com