Tôi đang cố gắng sắp xếp một vector chứa các đối tượng không được sao chép có thể xây dựng hoặc có thể xây dựng mặc định (nhưng có thể chuyển động), nhưng tôi gặp lỗi về trình biên dịch không thể tìm thấy hàm hợp lệ cho swap
. Tôi nghĩ rằng có một nhà xây dựng di chuyển sẽ là đủ. Tôi đang thiếu gì ở đây?Làm cách nào để sử dụng std :: sort với các đối tượng không có hàm tạo bản sao?
class MyType {
public:
MyType(bool a) {}
MyType(const MyType& that) = delete;
MyType(MyType&& that) = default;
};
int main(void) {
vector<MyType> v;
v.emplace_back(true);
sort(v.begin(), v.end(), [](MyType const& l, MyType const& r) {
return true;
});
}
Theo cppreference, 'std :: sort' yêu cầu loại phải di chuyển constructible * và * di chuyển được gán. – chris
@chris Có, tôi đã làm rõ câu trả lời, cảm ơn. – vsoftco
Phát ngay. Các yếu tố không thể di chuyển được xây dựng bởi vì tất cả chúng đều đã tồn tại; họ phải di chuyển _assigned_ để trao đổi giá trị của họ xung quanh. –