`X :: X(const X &&)`Const移动构造函数?

And*_*zos 3 c++ c++11

可能重复:
移动构造函数签名

struct X
{
    X(X&);         // (1)
    X(X&&);        // (2)
    X(const X&);   // (3)
    X(const X&&);  // (4)
};
Run Code Online (Sandbox Code Playgroud)

是否有任何情况(4)会在重载决议中被选中?

R. *_*des 9

是.一种情况是你有一个带有const返回值的函数:

const X f();

X x(f());
Run Code Online (Sandbox Code Playgroud)

  • 不,它没有多大意义.有些人养成了这样做的习惯,以避免在C++ 03中使用像f()= x这样的无意义的东西,但现在这种习惯必须消失,因为它会抑制移动语义. (7认同)