Hatena::ブログ(Diary)

Faith and Brave - C++で遊ぼう このページをアンテナに追加 RSSフィード Twitter

2011-06-10

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

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);
}

デストラクタ呼び出しは変数を使ったことにならないんだろうか。

ちなみにこの警告は、<boost/concept/detail/msvc.hpp>で出る。


いちおう、Microsoft Connectの方にバグ報告しておきました。

明示的なデストラクタ呼び出しで未使用変数警告がでる - Microsoft Connect


Boostの方にはすでに報告されているようです。

https://svn.boost.org/trac/boost/ticket/3196


aa 2011/06/10 17:04 trivalなデストラクタの呼び出しは、無かったことにされてしまうようですね。

匿名希望匿名希望 2011/06/10 21:43 vcは"."や"->"でstaticメンバ関数を呼ぶときもこれと似たようなバグがありますよね。

wraith13wraith13 2011/06/10 23:46 最近のバージョンでは確認してないけど Borland でも同じ問題があったですお。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/faith_and_brave/20110610/1307691704