読者です 読者をやめる 読者になる 読者になる

謎の警告 - デストラクタ呼び出しで未使用変数警告

VC++

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