Ho il seguente shared_ptr
ad un map
:Inizializzazione std :: shared_ptr <std::map<>> utilizzando rinforzato-init
std::shared_ptr<std::map<double, std::string>>
e vorrei inizializzare utilizzando rinforzato-init. È possibile?
ho provato:
std::string s1("temp");
std::shared_ptr<std::map<double, std::string>> foo = std::make_shared<std::map<double, std::string>>(1000.0, s1);
ma che dà il seguente errore quando compilato utilizzando 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
Ho provato altre varianti del primo parametro (1000.0) senza successo .
Qualcuno può aiutare?
possibile, ma non abbastanza, 'std :: shared_ptr> foo = std :: mak e_shared > (std :: initializer_list :: value_type> {{1000.0, s1}}); ' –
o solo 'std :: shared_ptr> foo = std :: make_shared > (std :: map {{1000.0, s1}}); 'ma ancora non bello –
Che funziona. Prendo atto dell'uso di 'value_type'. Vedo la sua semplice 'typedef pair'. Perché ne ho bisogno? –
ksl