Я не уверен, почему никто не сказал этого, но правильный ответ - сбросить const
или сохранить A*
в векторе (используя соответствующий умный указатель).
Вы можете придать своему классу ужасную семантику, вызвав «копирование», вызывая UB или ничего не делая (и, следовательно, не будучи копией), но почему все эти проблемы танцуют вокруг UB и плохого кода? Что вы получаете, делая это const
? (Подсказка: ничего.) Ваша проблема концептуальна: Если у класса есть член const, класс является const. Объекты, которые являются const, принципиально не могут быть назначены.
Просто сделайте его неконстантным private и покажите его значение неизменным. Для пользователей это эквивалентно, по-постоянному. Это позволяет неявно сгенерированным функциям работать очень хорошо.