применяется к имени, объявляемому в объявлении нестатического члена данных, который не является битным полем.
делает этот член-член-субъект потенциально-переполняющимся, то есть, позволяет этому участнику перекрывать другие нестатические участники или базовые подборы его класса. Это означает, что если у члена есть пустой тип класса (например, распределитель без состояния), компилятор может оптимизировать его, чтобы не занять пространство, точно так же, как если бы это было пустой базой. Если участник не является пустым, в нем можно также повторно использоваться для хранения других элементов данных. Но эта часть: < /p>
Если участник не является пустым, любая хвостовая накладка в нем также может быть повторно использовано для хранения других элементов данных. < /P>
< /blockquote>
- это то, что меня путает. его требования к выравниванию и не используется ни одним из объектов, которые подготовлены. Например: < /p>
Код: Выделить всё
struct alignas(8) Test {
char x;
bool y;
};
Код: Выделить всё
struct alignas(8) Test {
char x;
bool y;
};
struct Combine {
[[no_unique_address]] Test test;
bool flag;
};
int main() {
return sizeof(Combine);
}
Код: Выделить всё
struct alignas(8) Test {
[[no_unique_address]] char x; //
Подробнее здесь: [url]https://stackoverflow.com/questions/79698364/what-is-correct-mental-model-for-no-unique-address-in-c[/url]
Мобильная версия