Hầu hết các lần tôi thấy std::moveđược đăng trên đây, nó tham khảo <utility>phiên bản.
Các std::movetrong<algorithm> thực sự làm những gì tên của nó cho thấy, di chuyển , trong khi std::movetrong<utility> phôi đối số của nó đến một Xvalue, mà về cơ bản chỉ là một bước tiền xử lý cho cuối cùng di chuyển Xvalue vào một giá trị trái. Vì vậy, không có gì khó hiểu khi cả hai được đặt tên movekhi chức năng của mỗi loại khác nhau?
movelẽ phải được gọi make_rvaluehoặc một cái gì đó dọc theo những dòng đó. Thật khó chịu khi giải thích hết lần này đến lần khác rằng tham số đơn lẻ std::movekhông thực sự di chuyển bất cứ thứ gì.
<algorithm>chỉ đơn giản là một trong <utility>áp dụng cho toàn bộ phạm vi.
<algorithm>thực sự thực hiện di chuyển (giả sử rằng có một toán tử gán chuyển động được xác định cho loại chúng ta đang di chuyển).
std::movemột toán tử thay vì một chức năng thư viện. Bất kỳ tên nào tốt hơn std::movesẽ dài hơn, mà hút.