title: Virtual table layout on MSVC- where's the type info?
body: <p>I have the following C++ code illustrating virtual methods:</p>
  
  <pre><code>class X{
      O a;
      H b;
      virtual void c() = 0;
      virtual void d() = 0;
  };
  
  class Y : public X{
      virtual void c();
      virtual void d();
  };
  </code></pre>
  
  <p>which outputs the following vtable layout on MSVC:</p>
  
  <pre><code>1&gt;  class X size(24):
  1&gt;      +---
  1&gt;   0  | {vfptr}
  1&gt;   8  | a
  1&gt;  16  | b
  1&gt;      +---
  1&gt;  
  1&gt;  X::$vftable@:
  1&gt;      | &amp;X_meta
  1&gt;      |  0
  1&gt;   0  | &amp;X::c
  1&gt;   1  | &amp;X::d
  1&gt;  
  1&gt;  X::c this adjustor: 0
  1&gt;  X::d this adjustor: 0
  1&gt;  
  1&gt;  
  1&gt;  class Y size(24):
  1&gt;      +---
  1&gt;      | +--- (base class X)
  1&gt;   0  | | {vfptr}
  1&gt;   8  | | a
  1&gt;  16  | | b
  1&gt;      | +---
  1&gt;      +---
  1&gt;  
  1&gt;  Y::$vftable@:
  1&gt;      | &amp;Y_meta
  1&gt;      |  0
  1&gt;   0  | &amp;Y::c
  1&gt;   1  | &amp;Y::d
  1&gt;  
  1&gt;  Y::c this adjustor: 0
  1&gt;  Y::d this adjustor: 0
  1&gt;  
  1&gt;  
  </code></pre>
  
  <p>After reading Inside the C++ object model I was wondering in the above vtable layouts where is the type info? </p>
  
  <p>In the book (I think they use GCC vtable layout) the type info would be in the 0th element of the vtable. For MSVC this is not the case as its a virtual function- so where is the type info stored?? Is that what <code>"_meta"</code> is??</p>