Mam następujący shared_ptr
do map
:Inicjowanie std :: shared_ptr <std::map<>> using usztywnione inicjalizacji
std::shared_ptr<std::map<double, std::string>>
i chciałbym zainicjować go za pomocą usztywnione inicjalizacji. Czy to możliwe?
Próbowałem:
std::string s1("temp");
std::shared_ptr<std::map<double, std::string>> foo = std::make_shared<std::map<double, std::string>>(1000.0, s1);
ale daje następujący błąd podczas skompilowany przy użyciu Xcode 6.3:
/usr/include/c++/v1/map:853:14: Candidate constructor not viable: no known conversion from 'double' to 'const key_compare' (aka 'const std::__1::less<double>') for 1st argument
Próbowałem innych odmian pierwszego parametru (1000,0), bez powodzenia .
Czy ktoś może pomóc?
możliwe, ale nie ładna, 'std :: shared_ptr> foo = std :: MAK e_shared > (std :: initializer_list :: value_type> {{1000.0, s1}}); ' –
lub po prostu 'std :: shared_ptr> foo = std :: make_shared > (std :: map {{1000.0, s1}}); 'ale nadal niezbyt miły –
To działa. Zauważam użycie 'value_type'. Widzę jego właśnie 'typedef pair'. Dlaczego tego potrzebuję? –
ksl