Tôi cố gắng để khởi một std::vector<std::unique_ptr<std::string>>
trong một cách mà là tương đương với một ví dụ từ Bjarne Stroustrup's C++11 FAQ:Khởi container của unique_ptrs ra khỏi danh sách khởi tạo không thành công với GCC 4.7
using namespace std;
vector<unique_ptr<string>> vs { new string{"Doug"}, new string{"Adams"} }; // fails
unique_ptr<string> ps { new string{"42"} }; // OK
tôi có thể thấy không có lý do tại sao cú pháp này nên thất bại . Có điều gì sai trái với cách khởi tạo vùng chứa này không?
Thông báo lỗi trình biên dịch là rất lớn; phân đoạn có liên quan tôi tìm thấy bên dưới:
/usr/lib/gcc-snapshot/lib/gcc/i686-linux-gnu/4.7.0/../../../../include/c++/4.7.0 /bits/stl_construct.h:77:7: error: no matching function for call to
'std::unique_ptr<std::basic_string<char> >::unique_ptr(std::basic_string<char>&)'
Cách khắc phục lỗi này là gì?
Đó là chọn đầu vào của biến lặp ctor – PlasmaHH
Rất giống với http://stackoverflow.com/a/9504162/841108 –
@PlasmaHH Trong mã thực tế của tôi, tôi có nhiều mục trong danh sách khởi tạo, vì vậy tôi không tin đây là vấn đề. – juanchopanza