warning C4355

struct Foo{
  void* p;
  Foo():p(this){}
};
----
warning C4355: 'this' : ベース メンバ初期化リストで使用されました。

VCではこのような警告を出してくれます。しかし、どうしても初期化リストでthisポインタを使用したいときがあります。

最初は #pragma warning(disable: 4355) で黙らせようかと思いましたが、次のようにすれば警告が鳴り止むと気付きました。

struct Foo{
  void* p;
  Foo():p(get_this()){}
  void* get_this(){ return this; }
};