最終更新日時: 2024年06月11日 22時45分38秒 (JST)
Akira Takahashi が更新

履歴 編集

function
<memory>

# std::undeclare_no_pointers(C++11)(C++23で削除)

    namespace std {
      void undeclare_no_pointers(char* p, size_t n);
    }

この関数はC++23で削除された。

## 概要

特定の領域に追跡可能なポインタが存在しないことの宣言を取り消す。

## 要件

同じ領域が既に`declare_no_pointers()`で宣言されている。

## 効果

`declare_no_pointers()`で登録された領域の登録を取り消す。

この関数は、指定された範囲のオブジェクトが寿命を終える前に呼ばれなければならない。

## 戻り値

なし

## 例外

投げない

## 例

    #include <memory>
    #include <cstdlib>

    int main()
    {
      int* p = new int[100];
      std::undeclare_no_pointers(p); // ill-formed
      return EXIT_SUCCESS;
    }

## バージョン

### 言語

- C++11

### 処理系

- GCC: ?
- Clang: 3.4 (relaxed実装) ✅
- ICC: ?
- Visual C++: 2010 ✅, 2012 ✅, 2013 (relaxed実装) ✅

## 参照

- P2186R2 Removing Garbage Collection Support