próbuję zainicjować takie std::vector<std::unique_ptr<std::string>>
w sposób, który jest równoważny do przykładu z Bjarne Stroustrup's C++11 FAQ:Inicjowanie pojemnik unique_ptrs z listy inicjatora nie z 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
widzę żadnego powodu, dlaczego ta składnia powinna zawieść . Czy jest coś nie tak z tym sposobem inicjowania kontenera?
Komunikat o błędzie kompilatora jest ogromny; Odpowiedni segment znajduje się poniżej:
/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>&)'
Jaki jest sposób naprawienia tego błędu?
Podejmuje wejściowy iterator ctor – PlasmaHH
Bardzo podobny do http://stackoverflow.com/a/9504162/841108 –
@PlasmaHH W moim rzeczywistym kodzie miałem wiele wpisów na liście inicjalizacyjnej, więc nie wierzę to jest problem. – juanchopanza