boost::checked_delete

トップページ > 小道具 >

abstract

必要なヘッダ
<boost/utility.hpp>
出来ること
不完全型のdeleteの時に警告
リファレンス
en

sample

サンプルの動作確認バージョン [GCC4.4/1.41.0] [VC9/1.41.0]

#include <boost/utility.hpp>

class Hoge;
Hoge* CreateHoge();

int main()
{
	Hoge* ptr = CreateHoge();

	...

	boost::checked_delete( ptr ); // ここでコンパイルエラー

	return 0;
}

etc

class Hoge; ととりあえずクラス名を宣言しておくと、 Hoge の中身はわからずともとりあえず Hogeへのポインタや参照だけは扱うソースが書けます。 しかしそこで、そのポインタをdeleteしようとすると、 Hogeクラスをどーやってデストラクトしてよいか、 コンパイラにはわからないので上手く動きません。そこで、 ちゃんとdeleteできるポインタかどうかチェックしつつ削除… というのがこの関数の役目です。

…でも、大抵のコンパイラならこれ無しでも検出して警告してくれると思う…。

「単に、引数に対してdeleteを適用する関数」として、STL のアルゴリズムなどに渡すために使うこともできます。

see also

presented by k.inaba (kiki .a.t. kmonos.net) under CC0