Здравствуйте, B0FEE664, Вы писали:
BFE>Почему у std::exception нет move конструктора?
BFE>Задача: поймать и конвертировать велосипедное исключение в исключение отнаследованное от std::exception, а результат бросить дальше.
BFE>Соответственно, если я напишу:
BFE>BFE>class NewException : public std::exception
BFE>{
BFE>public:
BFE> NewException()noexcept{}
BFE> NewException(const NewException&) noexcept = default;
BFE> NewException(NewException&& ) noexcept = default;
BFE> virtual ~NewException() {}
BFE> virtual const char* what() const noexcept;
BFE>//...
BFE>};
BFE>
BFE>то сможет ли компилятор создать код для NewException(NewException&&) если у базового класса (std::exception) нет подходящего конструктора? Или же NewException(NewException&&) не будет создан вовсе?
Не будет создан вовсе, если перемещающий конструктор в базовом классе явно объявлен удаленным. В остальных случаях подхватится либо конструктор перемещения базового класса (если доступен), либо копирующий.