// Error: con un destructor declarado no hay movimiento implícito; std::move termina en la copia superficial.
#include <cstddef>
#include <utility>

class IntBuffer {
public:
    explicit IntBuffer(std::size_t size) : data_(new int[size]()), size_(size) {}
    ~IntBuffer() {
        delete[] data_;
    }

private:
    int* data_;
    std::size_t size_;
};

int main() {
    IntBuffer a(3);
    IntBuffer b = std::move(a);
    return 0;
}
