During coding of std::atomic, CAS, etc, I always struggle to memorize the definition of CPP class being "TriviallyCopyable".
Now I am gradually switching to C world, I accidentally found that most, if not all, scenarios where I deem one class to be TrivialCopyable is effectively a C struct. And the requirements described in the link above indeed looks like a C struct by me.
Is it? what did I miss?
N.B. of course C struct is public by default, etc, but let's just ignore those relatively irrelevant features, instead, my guess is whatever deemed to be TriviallyCopyable in CPP can be made in C by struct, with no hard hacking involved.
While all C structs are trivially copyable in C++, the reverse is not true. But this is mostly a matter of C++ having numerous constructs that C doesn't support which won't change the class's trivial copyability status. This can include non-virtual base classes (trivial copyability doesn't care how many base classes it has), any members that aren't non-static data members (member functions, static data members, constexpr members, constructors that don't interfere with trivial copyability etc), friend declarations, access controls like private and protected, etc.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With