#include <iostream>
#include <vector>
class DataHolder {
public:
DataHolder(std::vector<int> data) : data_(std::move(data)) {}
// Defaulted move constructor
DataHolder(DataHolder&&) = default;
// Defaulted move assignment operator
DataHolder& operator=(DataHolder&&) = default;
// Deleted copy operations to enforce move semantics
DataHolder(const DataHolder&) = delete;
DataHolder& operator=(const DataHolder&) = delete;
void printData() const {
for (int i : data_) {
std::cout << i << " ";
}
std::cout << std::endl;
}
private:
std::vector<int> data_;
};
int main() {
DataHolder d1({1, 2, 3, 4, 5});
DataHolder d2 = std::move(d1); // Uses defaulted move constructor
DataHolder d3({6, 7, 8});
d3 = std::move(d2); // Uses defaulted move assignment operator
d3.printData();
return 0;
}