NEUROMANTIC

自分でC/C++/UE4/Graphics/ゲームなどをやったことをメモするブログ

C++の類似デストラクタ(Pseudo-Destructor)のメモ

Pseudo Destructorとは

Pseudo Destructorは、単語通りに「類似」のデストラクタです。 テンプレートプログラミングなどをして、型引数 Tがデストラクタを持っているかないかにかかわらず挙動を同じにさせる時に良く使われるらしいです。

クラスではないタイプを使用しても、SFINAEまたはあらゆる方法として検査する必要なく同じコードを書くことが出来ます。

typedef int I;
int main() {
  I x = 10;
  x.I::~I();
  x = 20;
}

しかしClassではないタイプに対する類似デストラクタは、デストラクタを呼んでもそのタイプの変数の値は変わりません。なぜなら類似デストラクタは呼び出されても何もしないからです。 この類似デストラクタは、Scalarタイプ(Classではないタイプ)のポインターを持つ変数の->オペレーターとしても呼び出せるそうです。

一体どこに使えるかちょっと迷いますけど、TMPをずっとやってたら使う時が来ると思います。

参照

www.ibm.com

en.cppreference.com