使用前向的优点在完美的转发中,std::forward用于转换命名的rvalue引用。t1和t2到未命名的rvalue引用。这样做的目的是什么?这将如何影响被调用的函数?inner如果我们离开t1 & t2作为落伍?template <typename T1, typename T2>void outer(T1&& t1, T2&& t2) {
inner(std::forward<T1>(t1), std::forward<T2>(t2));}
3 回答
温温酱
TA贡献1752条经验 获得超4个赞
在完美转发中,std:Forward用于将命名的rvalue引用T1和T2转换为未命名的rvalue引用。这样做的目的是什么?如果我们把t1和t2作为lvalue,这会对调用的函数内部产生什么影响? template <typename T1, typename T2> void outer(T1&& t1, T2&& t2) { inner(std::forward<T1>(t1), std::forward<T2>(t2));}
void inner(int &, int &); // #1void inner(int &&, int &&); // #2
outer
outer(17,29);
t1
t2
inner(t1,t2);
std::forward
t1
outer
forward<T1>(t1)
T1
T1
T1
- 3 回答
- 0 关注
- 493 浏览
添加回答
举报
0/150
提交
取消