Большинство компиляторов, по крайней мере для любого стандарта C ++ до C ++ 17, эффективно реализуют ссылку в качестве указателя, если не оптимизированы.
В частности, внутри struct
он займет размер указателя (плюс выравнивание / заполнение и т. Д.).
Следовательно, это будет выполняться в большинстве сред:
struct S {
char & a;
};
static_assert(sizeof(S) == sizeof(void *));