title: Test for "POD-ness" in c++/c++11?
body: <p>I have some code which takes a packed POD structure/class and copies it into a memory block.</p>
  
  <pre><code>struct A
  {
     int a;
     int b;
  } a;
  
  memcpy(mymemoryblock, (void *)&amp;a, sizeof(A));
  
  // later I get a reply and...
  
  memcpy((void *)&amp;a, mymemoryblock, sizeof(A));
  </code></pre>
  
  <p>This is only valid for POD types of data, and what I would like to know if there is a way I can test for POD-ness. If someone accidentally adds a member function to this class, the memcpy operations become invalid, but still compilable.  This leads to very difficult to detect bugs.</p>
  
  <p>Is there a is_POD_type(A) function, or some other trick that can be used to detect PODness at runtime or compile time?</p>