LINUX.ORG.RU

История изменений

Исправление KennyMinigun, (текущая версия) :

В C++ sizeof даже для «пустых» типов будет равен 1. Потому как указатели на разные обьекты должны тоже отличатся.

Единственный случай, когда размер пустого обьекта (можно сказать) равен нулю — при наследовании:

struct Empty {};
static_assert(size of(Empty) == 1);

struct Derived : Empty {};
static_assert(size of(Derived) == 1);

Т.е. можно попробовать сделать что-то на основе...

Еще в C++20 появится аттрибут [[no_unique_address]] который расширяет возможности по созданию пустых обьектов.

https://en.cppreference.com/w/cpp/language/attributes/no_unique_address

Исходная версия KennyMinigun, :

В C++ sizeof даже для «пустых» типов будет равен 1. Потому как указатели на разные обьекты должны тоже отличатся.

Единственный случай, когда размер пустого обьекта (можно сказать) равен нулю — принаследовании:

struct Empty {};
static_assert(size of(Empty) == 1);

struct Derived : Empty {};
static_assert(size of(Derived) == 1);

Т.е. можно попробовать сделать что-то на основе...

Еще в C++20 появится аттрибут [[no_unique_address]] который расширяет возможности по созданию пустых обьектов.

https://en.cppreference.com/w/cpp/language/attributes/no_unique_address