Get_deleter da biblioteca de memória C ++

Descrição

Ele retorna um ponteiro para o deletador pertencente a sp.

Declaração

A seguir está a declaração para 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;

Parâmetros

sp - É um ponteiro compartilhado.

Valor de retorno

Ele retorna um ponteiro para o deletador pertencente a sp.

Exceções

noexcep - Não lança nenhuma exceção.

Exemplo

No exemplo a seguir, explica sobre 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;
}

Vamos compilar e executar o programa acima, isso produzirá o seguinte resultado -

[deleter called]
[deleter called]