最終更新日時: 2025年04月25日 17時13分12秒 (JST)
Akira Takahashi が更新

履歴 編集

# 不完全型へのポインタに対するdeleteを不適格とする [P3144R2](C++26)

このページはC++26に採用される見込みの言語機能の変更を解説しています。

のちのC++規格でさらに変更される場合があるため関連項目を参照してください。

## 概要

宣言のみで定義がない不完全型へのポインタへの`delete`は、これまで未定義動作を引き起こす操作になっていた。

C++26ではこれを不適格とし、コンパイル時エラーとする。

    class C;          // 不完全型の宣言
    C* cp = nullptr;  // 不完全型へのポインタはOK
    delete cp;        // C++23:未定義動作, C++26:コンパイルエラー

## 参照

- P3144R2 Deleting a Pointer to an Incomplete Type Should be Ill-formed