c++ - 非模板函数中的 std::forward

标签 c++ c++11

<分区>

有些函数有右值参数。还有一个函数也有右值参数。第一个函数调用第二个函数:

void inner(int&& a)
{/* ... */}

void outer(int&& a)
{
    inner(std::move(a));
}

我使用 std::move 因为我们使用 std::move 将参数作为右值传递。但是我的同事说 std::forward 在这里更合适,因为我们在这里转发(而不是移动)右值引用:

void outer(int&& a)
{
    inner(std::forward(a));
}

这是真的吗?哪个变体更正确?

最佳答案

前进是有条件的举动。在这里使用它就像说你应该在 if (true) 中包装语句。

关于c++ - 非模板函数中的 std::forward,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46053971/

相关文章:

C++ 代码编译,但在 Zorin OS 上运行时显示错误

c++ - memory_order_relaxed 是否尊重同一线程内的数据依赖性?

c++ - 在后续运行 'make' 时强制刷新 cmake 脚本

c++ - 如果子级覆盖另一个具有相同名称和不同签名的方法,则不会继承基类方法

c++ - 将整数静态转换为指针类型

C++ cin 在点击回车后没有返回

c++ - Qt3D QAbstractTextureImage 像素化

c++ - 当 T = int& 时,为什么构造函数 Message(const T& data) 与 Message(T&& data) 冲突?

c++ - 使用迭代器作为参数重载 << 运算符

c++ - 如何重载 operator<< 以输出在模板内定义的 vector ?