title: std::is_trivially_copyable is too strong, what shall I use instead?
body: <p>I want to accept classes which are &quot;trivially copyable&quot;, in the sense that if I mem-copy the byte representation of one variable of the type into another, it will be usable, and nothing will have been broken in any way.</p>
  <p>Looking at <a href="https://en.cppreference.com/w/cpp/types/is_trivially_copyable" rel="nofollow noreferrer"><code>std::is_trivially_copyable</code></a>, I see the requirements are:</p>
  <p>Trivially copyable classes, i.e. classes satisfying following requirements:</p>
  <blockquote>
  <ul>
  <li>At least one copy constructor, move constructor, copy assignment operator, or move assignment operator is eligible</li>
  <li>Every eligible copy constructor (if any) is trivial</li>
  <li>Every eligible move constructor (if any) is trivial</li>
  <li>Every eligible copy assignment operator (if any) is trivial</li>
  <li>Every eligible move assignment operator (if any) is trivial</li>
  <li>Has a trivial non-deleted destructor</li>
  </ul>
  </blockquote>
  <p>First and last requirement - check. But the other requirements are super-strong and not what I want! I'd be willing to &quot;compromise&quot; on having a <a href="https://en.cppreference.com/w/cpp/language/copy_constructor#Trivial_copy_constructor" rel="nofollow noreferrer">trivial copy ctor</a> as a requirement, and that's already quite different than what I really want.</p>
  <p>So, what type trait can I use from the standard library, or write myself, to express the constraint I'm interested in?</p>
  <p>I'm writing C++11 right now, so if your answer requires a later standard - write it, but mention that fact explicitly.</p>