title: Why can an unmanaged struct not be a member of a managed class?
body: <p>I know in C++/CLI one cannot use unmanaged types when defining a managed class:</p>
  
  <pre><code>public struct Unmanaged
  {
      int x;
      int y;
  };
  
  public ref class Managed
  {
      int one;
      Unmanaged two;  //error C4368
  };
  </code></pre>
  
  <p>I do not understand why though. <code>Unmanaged</code> is simply a collection of native types - its size is known, surely it (and by it I mean the block of memory that defines it) would be moved around with the 'block of memory' that is <code>Managed</code> inside the 'managed heap', and whatever offset is stored in the metadata will remain valid, no? Just as if an integer or a float were declared?</p>
  
  <p><em><strong>Why</em> can we not mix types?</strong></p>