我有以下代码:
#include <cstdio>
#include <iostream>
using std::cout;
struct SomeType {
SomeType() {}
SomeType(const SomeType &&other) {
cout << "SomeType(SomeType&&)\n";
*this = std::move(other);
}
void operator=(const SomeType &) {
cout << "operator=(const SomeType&)\n";
}
void operator=(SomeType &&) {
cout << "operator=(SomeType&&)\n";
}
};
int main() {
SomeType a;
SomeType b(std::move(a));
b = std::move(a);
return 0;
}
我希望移动构造函数调用移动赋值运算符。这是该程序的输出:
SomeType(SomeType&&)
operator=(const SomeType&)
operator=(SomeType&&)
如您所见,移动赋值运算符已成功调用,但在分配给*this
内部移动构造函数时未成功调用。为什么会发生这种情况,我可以以某种方式解决它吗?