GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • cpprefjp - C++日本語リファレンス
  • GitHub Project

This view

  • Original page
  • New address

GeezerVison is showing cpprefjp.github.io — std::default_delete - cpprefjp C++日本語リファレンス

  1. リファレンス
  2. memory
  3. default_delete

最終更新日時: 2026年09月19日 21時31分51秒 (JST)
rotarymars が更新

履歴 編集

class template
<memory>

std::default_delete(C++11)

namespace std {
  // 単一オブジェクト版
  template <class T>
  struct default_delete;

  // 配列版
  template <class T>
  struct default_delete<T[]>;
}

概要

default_deleteは、リソースを自動的に解放するスマートポインタクラスであるunique_ptrにおいて、デフォルトで使用されるデリータクラスである。unique_ptrが配列を所有できるようにするため、T[]時にはdelete[]を呼びだすように特殊化される。

テンプレートパラメータTには不完全型を指定してよい。ただし、型Tが不完全型である場合、operator()の実行は不適格となる。

単一オブジェクト版のメンバ関数

名前 説明 対応バージョン
(constructor) コンストラクタ C++11
operator() 渡されたポインタをdeleteで削除する C++11

配列版のメンバ関数

名前 説明 対応バージョン
(constructor) コンストラクタ C++11
operator() 渡されたポインタをdelete[]で削除する C++11

デストラクタは宣言されておらず、暗黙に定義される。

例

#include <memory>

// default_deleteはunique_ptrのデフォルト引数として自動的に渡されるため、
// ここでは説明用に明示的にdefault_deleteを指定する

int main()
{
  {
    std::unique_ptr<int, std::default_delete<int>> p(new int());
    *p = 3;
  } // pが指しているintオブジェクトがdeleteされる

  {
    std::unique_ptr<int[], std::default_delete<int[]>> p(new int[3]);

    for (std::size_t i = 0; i < 3; ++i) {
      p[i] = i;
    }
  } // pが指しているint配列がdelete[]される
}

出力

バージョン

言語

  • C++11

処理系

  • Clang: 9.0.1 ✅
  • GCC: 4.4 ✅, 4.7.2 ✅
  • Visual C++: 2010 ✅, 2012 ✅, 2013 ✅

関連項目

  • unique_ptr

参照

  • LWG Issue 1193. default_delete cannot be instantiated with incomplete types
    • C++11で、テンプレートパラメータTが不完全型であってもよいことが明記された。不完全型を扱うunique_ptrを宣言できるようにするため
  • N4089 Safe conversions in unique_ptr<T[]>, revision 2
    • C++17で、配列版に変換コンストラクタが追加され、関数呼び出し演算子が制約付きのテンプレートへ置き換えられた
  • P2273R3 Making std::unique_ptr constexpr
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.