
</ul>

<p>(Note that <code>std::is_trivially_copyable_v&lt;T&gt;</code> requires trivial destruction,
but NOT trivial construction. This means that C++ can do non-trivial construction
of otherwise trivial types)</p></li>
</ol>

<hr />

<p>The above is what the standard officially requires for <em>well defined</em> C and C++ interop.
However, all of the three major compilers MSVC, GCC and clang are considerably more relaxed.
In those three major compilers, &ldquo;almost-standard-layout&rdquo; C++ types work