Согласно ссылке cpp cpp-ref, компилятор не генерирует перемещение по умолчанию конструктор, если у нас есть определяемый пользователем деструктор.
Фрагмент кода:
class General
{
public:
~General();
General();
void testInitList();
};
int main(int argc, char **argv) {
General b(std::move(General()));
General g = std::move(b);
g.testInitList();
return 0;
}
Код компилируется, подразумевая, что компилятор создал конструктор перемещения по умолчанию. Код был скомпилирован с использованием gcc версии 5.4.0.
Может ли кто-нибудь объяснить, почему компилятор сгенерировал конструктор перемещения и оператор присваивания перемещения в этом случае, несмотря на наличие деструктора?
Лучший, Рахул