title: Getting the size of an indiviual field from a c++ struct field
body: <p>The short version is: How do I learn the size (in bits) of an individual field of a c++ field?</p>
  
  <p>To clarify, an example of the field I am talking about:</p>
  
  <pre><code>struct Test {
      unsigned field1 : 4;  // takes up 4 bits
      unsigned field2 : 8;  // 8 bits
      unsigned field3 : 1;  // 1 bit
      unsigned field4 : 3;  // 3 bits
      unsigned field5 : 16; // 16 more to make it a 32 bit struct
  
      int normal_member; // normal struct variable member, 4 bytes on my system
  };
  
  Test t;
  t.field1 = 1;
  t.field2 = 5;
  // etc.
  </code></pre>
  
  <p>To get the size of the entire Test object is easy, we just say</p>
  
  <pre><code>sizeof(Test); // returns 8, for 8 bytes total size
  </code></pre>
  
  <p>We can get a normal struct member through</p>
  
  <pre><code>sizeof(((Test*)0)-&gt;normal_member); // returns 4 (on my system)
  </code></pre>
  
  <p>I would like to know how to get the size of an individual field, say Test::field4. The above example for a normal struct member does not work. Any ideas? Or does someone know a reason why it cannot work? I am fairly convinced that sizeof will not be of help since it only returns size in bytes, but if anyone knows otherwise I'm all ears.</p>
  
  <p>Thanks!</p>