// Declarar un destructor apaga el movimiento implícito: "mover" termina copiando.
#include <iostream>
#include <utility>

#include "traced.h"

class OnlyMember {
public:
    Traced member{"m"};
};

class WithDestructor {
public:
    ~WithDestructor() {}
    Traced member{"m"};
};

int main() {
    std::cout << "sin destructor declarado:\n";
    OnlyMember a;
    OnlyMember b = std::move(a);
    std::cout << "con destructor declarado:\n";
    WithDestructor c;
    WithDestructor d = std::move(c);
    std::cout << "fin de main\n";
    return 0;
}
