相关疑难解决方法(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万
查看次数

为什么我必须调用rvalue引用上的移动?

在下面的代码中,为什么第一次调用mkme = mvme_rv调度不到T& operator=(const T&&)

#include <iostream>
#include <string>
#include <vector>

using namespace std;
using T = vector<int>;

int main()
{
  T mvme(10, 1), mkme;
  T&& mvme_rv = move(mvme); // rvalue ref?
  mkme = mvme_rv;           // calls T& operator=(const T&)?
  cout << mvme.empty();     // 0
  mkme = move(mvme_rv);     // calls T& operator=(const T&&)?
  cout << mvme.empty();     // 1
}
Run Code Online (Sandbox Code Playgroud)

c++ move-semantics

8
推荐指数
1
解决办法
729
查看次数