Tôi đang cố gắng sử dụng std::move
trong mã của tôi, nhưng trình biên dịch (g ++ 4.4) tôi đang sử dụng không hỗ trợ nó. Có thể boost::move
thay thế std::move
hoàn toàn không? Cảm ơn.đối tác của std :: di chuyển trong thư viện tăng
Trả lời
std::move
(và boost::move
khi hỗ trợ C++ 0x được bật) chỉ là một diễn viên từ T&
đến T&&
. Nó không thực sự di chuyển bất cứ điều gì. Điều này có nghĩa là kiểu con trỏ cụ thể T&&
phải được trình biên dịch hỗ trợ. GCC hỗ trợ tham chiếu giá trị r kể từ phiên bản 4.3, vì vậy phiên bản tăng cường sẽ ổn.
Tuy nhiên, có lý do nào bạn không thể sử dụng std::move
từ #include <utility>
?
http://en.cppreference.com/w/cpp/utility/move
Bạn chỉ cần phải chắc chắn để xác định -std=c++0x
như một tùy chọn biên dịch để cho phép hạn chế c hỗ trợ ++ 11 mà gcc 4.4 có.
Trong C++ 03 'boost :: move', nó không chỉ là một diễn viên **: đó là lý do tại sao nó hoạt động ở đó. "Boost.Move dựa trên các macro được mở rộng thành các tham chiếu rvalue thực trong các trình biên dịch C++ 0x và các lớp tham chiếu rvalue mô phỏng và các toán tử chuyển đổi trong các trình biên dịch C++ 03." Xem [Boost docs] (http://www.boost.org/doc/libs/1_59_0_b1/doc/html/move/how_the_library_works.html) – nugae
@nugae có, bạn hoàn toàn đúng. –
Có nó có thể
Boost.Move là gì?
Tham chiếu Rvalue là một tính năng chính của C++ 0x, cho phép di chuyển ngữ nghĩa cho giá trị C++. Tuy nhiên, chúng ta không cần các trình biên dịch C++ 0x để có được lợi thế của việc di chuyển semanatics. Boost.Move mô phỏng ngữ nghĩa di chuyển C++ 0x trong C++ 03 trình biên dịch và cho phép viết mã di động hoạt động tối ưu trong các trình biên dịch C++ 03 và C++ 0x.
Nguồn: http://www.boost.org/doc/libs/1_59_0_b1/doc/html/move.html
- 1. Di chuyển thư viện R
- 2. Thư viện Tăng cường nào lợi dụng Di chuyển ngữ nghĩa
- 3. using std :: di chuyển
- 4. Bật di chuyển trong dự án thư viện lớp
- 5. Tại sao không std :: di chuyển trên một std :: unique_lock có bất kỳ tác dụng?
- 6. std :: vector :: emplace_back và std :: di chuyển
- 7. Lặp đi lặp lại std :: di chuyển trên một tăng :: asio socket đối tượng trong C + + 11
- 8. Thư viện chuyển thư viện SFTP của Java
- 9. Liên kết thư viện tăng
- 10. Khả năng tương tác giữa tăng :: date_time và std :: chrono
- 11. Tại sao std :: di chuyển là cần thiết để gọi di chuyển gán nhà điều hành của std :: vector
- 12. std :: di chuyển bên trong nhà điều hành chuyển nhượng
- 13. Thao tác Di chuyển/Sao chép Tệp trong Java
- 14. Thư viện xác nhận di chuyển cờ vua
- 15. Vật thể zombie sau std :: di chuyển
- 16. std :: di chuyển hoạt động C++
- 17. Chuyển tiếp trang di động jQuery CSS3 mà không cần thư viện di động jQuery
- 18. std :: make_shared, std :: unique_ptr và di chuyển nhà xây dựng
- 19. Tôi nên std :: di chuyển một shared_ptr trong một nhà xây dựng di chuyển?
- 20. Nên std :: di chuyển thả constness?
- 21. CCR của Microsoft vs Thư viện song song tác vụ
- 22. Thư viện SIMD di động tốt
- 23. std :: vector :: erase() không muốn di chuyển
- 24. std :: di chuyển giữa std :: string và std :: vector <unsigned char>
- 25. Kích thước tăng phụ thuộc thư viện của APK?
- 26. Chức năng `std ::` có được phép di chuyển đối số của nó không?
- 27. trực quan lỗi Studio Compile trong thư viện std
- 28. Tăng liên kết tĩnh của thư viện trên Xcode 4
- 29. Cách tạo Chủ đề trong thư viện lớp di động?
- 30. Sử dụng thư viện tăng C++?
'g ++ 4.4' là rất cũ. Xem xét chuyển sang phiên bản mới hơn – alexeykuzmin0