The value of r here is an expression ClassA(a).
ClassA b = ClassA(a);
This is a copy initialization, so it will try to call the copy constructor ClassAwith a result ClassA(a)that is an rvalue. You announced that the copy constructor accepts ClassA&, which cannot communicate with rvalues, so you get an error.
, , const , r, :
ClassA b (a);
ClassA b {a}; //C++11
ClassA b = a;
, ClassA b = ClassA(a); -, , , elided. , - .