Comment passer deleter à make_shared?

Depuis C++11, à cause de plusieurs raisons, les développeurs ont tendance à utiliser de pointeur intelligent classes pour la dynamique de durée de vie des objets. Et avec les nouvelles smart pointeur de classes, de normes, de même vous suggérons de ne pas utiliser des opérateurs comme new lieu de cela, ils suggèrent d'utiliser make_shared ou make_unique afin d'éviter certaines erreurs.

Si vous voulez utiliser un pointeur intelligent de la classe, comme shared_ptr, nous pouvons construire un, comme,

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

Aussi nous aimerions passer une coutume deleter de pointeur intelligent classes,

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

D'autre part, si nous aimons utiliser make_shared d'allouer, pour ex. int, au lieu d'utiliser new et shared_ptr constructeur, comme sur la première expression ci-dessus, nous pouvons utiliser

auto ip = make_shared<int>(12);

Mais ce qui si on aime également passer une coutume deleter à make_shared, est-il une bonne façon de le faire? Semble que les compilateurs, au moins gcc, donne une erreur,

auto ip = make_shared<int>(12, deleter);
  • Écrivez votre propre make_shared() qui prend en charge ce, c'est faisable.