Eventuali duplicati:
make_unique and perfect forwardingPerché C++ 11 hanno `make_shared` ma non` make_unique`
Perché C++ 11 hanno un modello make_shared
, ma non un Modello make_unique
?
Questo rende il codice molto incoerente.
auto x = make_shared<string>("abc");
auto y = unique_ptr<string>(new string("abc"));
Probabilmente perché 'unique' ha bisogno di costruire un oggetto e hanno pensato che fosse meglio esplicito –
Non è il codice che è incoerente, è la libreria. –
Il costruttore di copie per unique_ptr è privato. Quindi make_unique non funziona senza "ottimizzazione del valore di ritorno". La mia ipotesi è secondo le specifiche del linguaggio questa ottimizzazione non è obbligatoria. – bop