Как я понял, при перегрузке operator = возвращаемое значение должно быть неконстантной ссылкой.
A& A::operator=( const A& )
{
// check for self-assignment, do assignment
return *this;
}
Он не const должен разрешать не-const-функции-члены в таких случаях, как:
( a = b ).f();
Но зачем ему возвращать ссылку? В каком случае это даст проблему, если возвращаемое значение не объявлено ссылкой, вернемся к значению?
Предполагалось, что конструктор копирования реализован правильно.