В примере в Cppreference мы имеем пустой тип пустого и введите z
Код: Выделить всё
struct Empty {}; // empty class
struct Z {
char c;
[[no_unique_address]] Empty e1, e2;
};
Однако я действительно хочу иметь z с размером 1 . Это заставило меня задуматься, что насчет обертывания пустого в некотором классе обертки с дополнительным параметром шаблона, который обеспечивает соблюдение различных типов E1 и E2 .
Код: Выделить всё
template
struct Wrapper : public T{};
struct Z1 {
char c;
[[no_unique_address]] Wrapper e1;
[[no_unique_address]] Wrapper e2;
};
< /code>
К сожалению, sizeof (z1) == 2 < /code>. Есть ли хитрость, чтобы сделать размер z1 < /code>, чтобы быть одним?template
struct Empty{
[[no_unique_address]] T t;
[[no_unique_address]] S s;
};
Подробнее здесь: https://stackoverflow.com/questions/591 ... -same-type
Мобильная версия