// Error: la asignación por defecto pierde el bloque del destino y comparte el del origen.
#include <cstddef>

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(5);
    b = a;
    return 0;
}
