Skip to content

Latest commit

 

History

History
67 lines (49 loc) · 1.45 KB

get_deleter.md

File metadata and controls

67 lines (49 loc) · 1.45 KB

get_deleter

  • memory[meta header]
  • std[meta namespace]
  • function template[meta id-type]
  • cpp11[meta cpp]
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);
}
  • std::get_deleter[color ff0000]

出力

バージョン

言語

  • C++11

処理系

  • Clang: 3.0 [mark verified]
  • GCC: 4.3.6 [mark verified]
  • ICC: ??
  • Visual C++: 2008 (TR1) [mark verified], 2010 [mark verified], 2012 [mark verified], 2013 [mark verified]