I don't seem to understand why you are using move assignment operator:
CLASSA & operator=(CLASSA && other);
copy assignment operator:
CLASSA & operator=(CLASSA other);
move assignment operatoronly accepts r-value referencefor example
CLASSA a1, a2, a3;
a1 = a2 + a3;
In copy assignment operator, othercan be constructor using copy constructoror move constructor(if otherinitialized r value, it can be designed for movement --if move-constructor-).
If this is the case copy-constructed, we will make 1 copy and this copy cannot be avoided.
If it is move-constructed, then the performance / behavior is identical to the performance created by the first overload.
My questions:
1- Why you need to implement move assignment operator.
2- If otherconstructed by r-value, then which assignment operatorcompiler could call? And why?