Wie gehen deleter zu make_shared?

Seit C++11, da von mehreren Gründen, tendieren Entwickler dazu, den Einsatz von smart-pointer-Klassen für die dynamische Lebenszeit von Objekten. Und mit diesen neuen smart-pointer-Klassen, - standards, auch empfehlen nicht die Verwendung von Operatoren wie new statt, die Sie vorschlagen, zu verwenden make_shared oder make_unique zu vermeiden, dass einige Fehler anfällig.

Wenn wir wie die Verwendung einer smart-pointer-Klasse, wie shared_ptr können wir konstruieren ein wie,

shared_ptr<int> p(new int(12));

Auch wir gerne weitergeben möchte einen custom deleter smart-pointer-Klassen,

shared_ptr<int> p(new int(12), deleter);

Auf der anderen Seite, wenn wir wie zu verwenden make_shared zu reservieren, für die ex. int anstelle der Verwendung new und shared_ptr Konstruktor, wie auf den ersten Ausdruck, den wir verwenden können,

auto ip = make_shared<int>(12);

Aber was ist, wenn wir auch einen custom deleter zu make_shared, gibt es eine richtige Weise, das zu tun? Scheint wie Compiler, zumindest gcc, gibt Fehler zu,

auto ip = make_shared<int>(12, deleter);
  • Schreiben Sie Ihre eigene make_shared(), die dies unterstützt, ist es machbar.
Schreibe einen Kommentar