Visual C++ 2010で警告レベルを4にすると、以下のプログラムで未使用変数の警告が出てしまう。
template <class T> struct Destruct { void f(T* p) // warning C4100: 'p' : 引数は関数の本体部で 1 度も参照されません。 { p->~T(); } }; struct X {}; int main() { Destruct<X>().f(0); }
デストラクタ呼び出しは変数を使ったことにならないんだろうか。
ちなみにこの警告は、
いちおう、Microsoft Connectの方にバグ報告しておきました。
明示的なデストラクタ呼び出しで未使用変数警告がでる - Microsoft Connect
Boostの方にはすでに報告されているようです。
https://svn.boost.org/trac/boost/ticket/3196