char * buf = new char[sizeof(T)];
new (buf) T;
T * t = (T *)buf;
//code...
//here I should destruct *t but as it is argument of template and can be
//instantiated via basic types as well (say int) so such code
/*t->~T();*/
//is incorrect (maybe correct? Strange, but it works on VS 2005 for basic types.)
//and this code
/*delete t;*/
//crashes the program.
delete [] buf;
では、破壊する正しい方法は何t
ですか?
PS 上記のコードは、私の問題を説明するためだけのものであり、これから書くコードとは実際には関係ありません。したがって、次のような回答はしないでください (new
非配置ではなく配置を使用するのはなぜですか? など)。