Рассмотрим следующий фрагмент:
#include <iostream>
#include <type_traits>
class base
{
public:
base(const base &) = default;
base(base &&) = delete;
};
class daughter : public base
{
};
int main()
{
std :: cout << std :: is_move_constructible <daughter> :: value << std :: endl;
}
Я смотрел на это все утро, но я просто не могу понять, почему он выдает:
1
Класс base
явно не может быть перемещаемым (is_move_constructible
на самом деле false
на base
), и daughter
наследуется от него. Почему он должен волшебным образом снова стать конструктивным? Как будет выглядеть конструктор перемещения по умолчанию daughter
?