Предоставлено (возможно, не-POD) struct
с одним членом, ни наследства, и нет виртуальных методов:Выравнивание и размер гарантии для отдельных структур членов
struct Foo {
Bar value;
Foo() { /* do something */ }
};
делает C++ гарантирует, что Foo
будет иметь тот же выравнивание и sizeof
как Bar
? Если нет, то какие гарантии могут быть даны? Могут ли быть некоторые гарантии, если я исправлю Bar
как особый тип типа (POD, базовый тип, ...)?
IIRC есть хотя бы один компилятор, который округлял все размеры класса до кратного 4, поэтому класс с одним членом 'char' имел бы 3 байта заполнения. – MSalters