| Скрытый текст |
| 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&&) не будет создан вовсе? |
| |
R>Не будет создан вовсе, если перемещающий конструктор в базовом классе явно объявлен удаленным. В остальных случаях подхватится либо конструктор перемещения базового класса (если доступен), либо копирующий.
Перемещающий конструктор удалён, но не явно:
namespace std {
class exception {
public:
exception() noexcept;
exception(const exception&) noexcept;
exception& operator=(const exception&) noexcept;
virtual ~ exception();
virtual const char* what() const noexcept;
};
}