Mögliche Duplizieren:
make_unique and perfect forwardingWarum ++ C 11 haben `make_shared` aber nicht` make_unique`
Warum 11 hat C++ eine make_shared
Vorlage, aber nicht ein make_unique
Vorlage?
Dies macht Code sehr inkonsistent.
auto x = make_shared<string>("abc");
auto y = unique_ptr<string>(new string("abc"));
Wahrscheinlich, weil 'unique' ein Objekt konstruieren muss und sie dachten, es wäre besser, explizit zu machen –
Es ist nicht der Code, der inkonsistent ist, es ist die Bibliothek. –
Der Kopierkonstruktor für unique_ptr ist privat. Also funktioniert make_unique nicht ohne "Rückgabewertoptimierung". Meine Vermutung ist entsprechend der Sprachspezifikation, dass diese Optimierung nicht obligatorisch ist. – bop