Согласно ссылке 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.
Может кто-нибудь объяснить, почему компилятор сгенерировал конструктор перемещения и оператор присваивания перемещения в этом случае, несмотря на наличие деструктора?
Best, Rahul