如何将int作为右值参数传递给函数或构造函数?

时间:2019-10-21 05:50:02

标签: c++11 c++14

在以下代码中, A类具有2个构造函数,一个构造函数按值接受int,另一个按rvalue引用接受int。如何使用第二个构造函数调用创建对象。

#include <iostream>
using namespace std;

class A
{
public:
  A(int i) : r_i(i)
  {
    cout<<endl<<"A(inti)";
  }

  A(int&& i) : r_i(i)
  {
    cout<<endl<<"A(int&&)";
  }

private:
  int &r_i;
};

int main()
{
  int j = 5;
  A a(j); // Works
  A b(std::move(j)); //  Error [1]
}

错误[1] :重载的“ A(std::remove_reference<int&>::type)”的调用不明确

哪个c ++规则阻止调用右值构造函数?

0 个答案:

没有答案