Какова новая функция в C ++ 20 [[NO_UNIQUE_ADDRESS]]?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Какова новая функция в C ++ 20 [[NO_UNIQUE_ADDRESS]]?

Сообщение Anonymous »

Я прочитал новую функцию C ++ 20 NO_UNIQUE_ADDRESS < /code>, и я надеюсь, что если кто-то сможет объяснить и проиллюстрировать с примером, лучше, чем этот пример, взятый из ссылки C ++. < /p>

Объяснение применимо к имени, объявляемому в декларации
non-static data. /> Указывает, что этот член данных не должен иметь адрес, отличный от
всех других нестатических данных о его классе. Это означает, что если элемент
имеет пустой тип (например, выплата без состояния), компилятор может
оптимизировать его, чтобы не занимать пространство, точно так же, как если бы он был пустой базой. Если
участник не пуст, любая хвостовая накладка в нем также может быть повторно использована для
сохранить другие элементы данных. < /P>
< /blockquote>
#include

struct Empty {}; // empty class

struct X {
int i;
Empty e;
};

struct Y {
int i;
[[no_unique_address]] Empty e;
};

struct Z {
char c;
[[no_unique_address]] Empty e1, e2;
};

struct W {
char c[2];
[[no_unique_address]] Empty e1, e2;
};

int main()
{
// e1 and e2 cannot share the same address because they have the
// same type, even though they are marked with [[no_unique_address]].
// However, either may share address with c.
static_assert(sizeof(Z) >= 2);

// e1 and e2 cannot have the same address, but one of them can share with
// c[0] and the other with c[1]
std::cout

Подробнее здесь: https://stackoverflow.com/questions/627 ... ue-address
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»