Это из пункта 16 действующего С ++ 2-го издания Скотта Мейерса (стр. 70)
Автор без особого объяснения пишет, что когда оператор базового класса вызывается следующим образом
Base::operator=(rhs);
какой-то компилятор (хотя и неправильно) отклоняет это, если operator =
был , сгенерированный компилятором (см. Пункт 45), так что лучше использовать
static_cast<base&>(*this) = rhs;
в пункте 45 он упоминает, что если базовый класс operator =
является закрытым, производный класс =
не имеет права вызывать его.
но в оригинальном вопросе компилятор отклонил его, потому что он был сгенерирован компилятором (который должен быть публичным)
любая помощь (ссылка) по этому вопросу будет полезна. (гуглить такие вопросы очень сложно)