Hacker News new | ask | show | jobs
by archangel_one 4550 days ago
No, the same restrictions apply to class as to struct. The most relevant difference in C++ is that the compiler can reorder data members that are in different visibility specifications (public, protected, private) but not within one of those blocks, to maintain compatibility with C.
3 comments

Well you only have guaranteed compatibility with C if a class is standard-layout, which requires that all members have the same access control (public, protected, private). So if there is any rule in C++ that mandates ordering within a "block" when there are multiple such "blocks", it's not for compatibility with C.
This is what I said. Even though they could change the rules for the classes they did not because it's far from "free".
Funnily, this is one of the freedoms granted by the standard which neither gcc, clang, or MSVC actually make use of.