• Class / Function / Type

      std::
    • Header file

      <>
    • Other / All

    最終更新日時(UTC):
    が更新

    履歴 編集

    function template
    <memory>

    std::get_deleter

    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

    処理系