相关疑难解决方法(0)

使用前进的优点

在完美转发中,std::forward用于转换命名的右值引用t1t2未命名的右值引用.这样做的目的是什么?inner如果我们离开t1&t2作为左值,那将如何影响被调用的函数?

template <typename T1, typename T2>
void outer(T1&& t1, T2&& t2) 
{
    inner(std::forward<T1>(t1), std::forward<T2>(t2));
}
Run Code Online (Sandbox Code Playgroud)

c++ c++-faq rvalue-reference perfect-forwarding c++11

411
推荐指数
6
解决办法
6万
查看次数

C++ std :: forward <T> vs static_cast <T>

据我所知,std::forward<T>(x)相当于static_cast<T&&>(x).

但是从我所看到的,static_cast<T>(x)似乎做同样的事情,如下面的代码所示

我的问题是为什么不出std::forward<T>被实现为static_cast<T&&>(x),而不是static_cast<T>(x),如果两者都具有相同的效果?

c++ perfect-forwarding c++11

7
推荐指数
1
解决办法
993
查看次数

完美转发 auto 类型的值

对于下面的代码,我们如何使用 std::forward 转发函数自动参数?

void push_value(std::vector<MyType>& vec, auto&& value)
{
    vec.emplace_back(std::forward<?>(value));
}
Run Code Online (Sandbox Code Playgroud)

c++ parameters function forward auto

3
推荐指数
1
解决办法
396
查看次数