How is an empty class and an empty struct compiled?
c++, clang, compiler-construction, gcc, visual-c++
Solution
It does in a way, it says that it has to allocate space for it unless certain cases when its used as a base class (known as Empty Base Class Optimization). This is to guarantee that different objects have different addresses.
They are compiled the same given that `struct` and `class` are the same thing, except for the default access specifier. In C++11 the notion of standard-layout classes/structs is introduced, and guarantees that the memory layout for empty classes to be the same.
Problem
Does the C++ standard dictate the compilation layout of the class and struct? How are they compiled differently especially if they are empty?