I am new to the new feature of C++ such as moving semantic (moving constructor and moving assignment operator). The code below produces an error in IDE as follows.
How to fix it?
#include <iostream>
using namespace std;
class HeavyData {};
class Base
{
protected:
HeavyData data;
public:
Base(HeavyData data) :data{ data } {}
Base(Base const&& src) :data{ move(src.data) } {}
Base& operator = (Base const&& rhs)
{
this->data = move(rhs.data);
return *this;
}
};
class Derived : public Base
{
private:
HeavyData extra;
public:
Derived(HeavyData data, HeavyData extra) :
extra{ extra }, Base(data) {}
Derived(Derived const&& src) :
extra{ move(src.extra) }, data{ move(src.data) } {}
Derived& operator = (Derived const&& rhs)
{
this->data = move(rhs.data);
this->extra = move(rhs.extra);
return *this;
}
};
void main()
{
HeavyData data, extra;
Derived d1(data, extra);
Derived d2 = move(d1);
}
