最終更新日時:
が更新

履歴 編集

function
<memory>

std::get_deleter(C++11)

namespace std {
  template <class D, class T>
  D* get_deleter(const shared_ptr<T>& p) noexcept;
}

概要

shared_ptrオブジェクトが持つデリータを取得する。

戻り値

pが持っているデリータの型がDのcv修飾を外した型に等しい場合、そのデリータオブジェクトへのポインタを返す。 型が等しくなければヌルポインタを返す。

備考

この関数によって返されるポインタは、pと同じ寿命を持つ。

デリータオブジェクトの所有権はpが持っているため、この関数のユーザーがデリータオブジェクトをdeleteしてはならない。

例外

投げない

#include <memory>

struct MyDeleter {
  template <class T>
  void operator()(T* p)
  {
    delete p;
  }
};

int main()
{
  std::shared_ptr<int> p(new int(3), MyDeleter());

  MyDeleter* deleter = std::get_deleter<MyDeleter>(p);
}

出力

バージョン

言語

  • C++11

処理系