I understand that whenever a custom copy constructor or an assignment operator is defined in a derived class then it is the responsibility of those methods to call the respective methods of the base class. Now my focus is on the move constructors. Suppose the following is my move constructor. I have two ways of calling the base class constructor. Taken from here
Derived(Derived&& d):Base(d) -->Form A
{}
Derived(Derived&& d):Base(std::move(d)) -->Form B
{}
Now which method is correct. From my understanding and from the last answer on the post using Form B would be dangerous and incorrect as the object will be nullified when the derived class constructor is called.However in formA the base class copy constructor is called. Would it be better to call FormA . Similarly in the move copy assignment operator wouldn't it be better to call the base class assignment operator then the base class.