Re[2]: конструктор перемещения для std::exception
От: B0FEE664  
Дата: 26.09.18 12:01
Оценка:
  Скрытый текст
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;
  };
}
И каждый день — без права на ошибку...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.