Đặc tả C++ 17 không dùng các thành viên construct
và destroy
của đối tượng std::allocator
. Nhóm làm việc đã cung cấp lý do cho việc không dùng chức năng thành viên khác here, dưới tiêu đề "Không dùng các thành viên dư thừa của std :: allocator".Tại sao std :: cấu trúc cấp phát và hủy các hàm bị phản đối trong C++ 17?
Tuy nhiên, họ không đề cập cụ thể lý do tại sao hai thành viên đó không được dùng nữa hoặc đề xuất là gì để thay thế chức năng đó. Tôi giả sử ý nghĩa là sử dụng std::allocator_traits::construct
thay thế.
Tôi là một chút nhầm lẫn về việc thực hiện construct
có thể thực sự vẫn là cần thiết trong một số trường hợp mặc dù vì this comment about std::allocator_traits::construct
Bởi vì chức năng này cung cấp sự sụp đổ tự động trở về vị trí mới, chức năng thành viên xây dựng() là một yêu cầu Allocator tùy chọn kể từ C++ 11.
Đối với người phân bổ tùy chỉnh (ví dụ: bộ nhớ được liên kết trang sử dụng memalign
), sẽ quay lại vị trí new
luôn tạo ra hành vi đúng?
vâng tôi đã nói khá nhiều trong câu hỏi. –