Bibliothèque de mémoire C ++ get_deleter

La description

Il renvoie un pointeur vers le suppresseur appartenant à sp.

Déclaration

Voici la déclaration pour std :: get_deleter.

template <class D, class T>
  D* get_deleter (const shared_ptr<T>& sp) noexcept;

C ++ 11

template <class D, class T>
  D* get_deleter (const shared_ptr<T>& sp) noexcept;

Paramètres

sp - C'est un pointeur partagé.

Valeur de retour

Il renvoie un pointeur vers le suppresseur appartenant à sp.

Des exceptions

noexcep - Il ne jette aucune exception.

Exemple

Dans l'exemple ci-dessous, explique std :: get_deleter.

#include <iostream>
#include <memory>

struct D {
   void operator()(int* p) {
      std::cout << "[deleter called]\n";
      delete[] p;
   }
};

int main () {
   std::shared_ptr<int> foo (new int[10],D());
   int * bar = new int[20];
   (*std::get_deleter<D>(foo))(bar);
   return 0;
}

Compilons et exécutons le programme ci-dessus, cela produira le résultat suivant -

[deleter called]
[deleter called]