Добавили пустой деструктор для логирования, и вектор кадров стал копироваться
struct Frame {
std::vector<uint8_t> pixels; // ~8 МБ
~Frame() { stats::framesDestroyed++; }
};
std::vector<Frame> queue;
queue.push_back(std::move(frame));
После добавления деструктора профайлер показывает копирование 8 МБ на каждом push_back, хотя стоит std::move. Почему?
- Свой деструктор отменяет неявный move-конструктор
- std::move не работает для классов с деструктором
- Деструктор делает класс полиморфным
- push_back копирует, если у класса есть деструктор
