thể trùng lặp:
make_unique and perfect forwardingTại sao C++ 11 có `make_shared` nhưng không 'make_unique`
Tại sao C++ 11 có một mẫu make_shared
, nhưng không phải là một make_unique
mẫu?
Điều này làm cho mã rất không nhất quán.
auto x = make_shared<string>("abc");
auto y = unique_ptr<string>(new string("abc"));
Có lẽ vì 'duy nhất' cần phải xây dựng một đối tượng và họ nghĩ rằng tốt hơn nên làm rõ ràng –
Nó không phải là mã không phù hợp, đó là thư viện. –
Trình tạo bản sao cho unique_ptr là riêng tư. Vì vậy, make_unique không hoạt động mà không có "tối ưu hóa giá trị trả lại". Tôi đoán là theo spec ngôn ngữ tối ưu hóa này là không bắt buộc. – bop