Согласно стандарту C ++:
Класс стандартного макета — это класс, который:
— не имеет нестатических членов-данных типа нестандартного класса макета (или массива таких типов) или ссылки.
Какие свойства ссылок препятствуют включению классов с элементами ссылок в определение стандартного класса макета?
Стандартный класс макета — это все о наличии четко определенного макета для определенного типа в объем памяти. В C ++ ссылки не являются объектами, поэтому у них нет хранилища, которое может быть доступно определенным образом с помощью соответствующей программы, даже если для реализации обычно требуется какое-то хранилище для конкретной реализации.
По этой причине не имеет смысла иметь ссылочные элементы в чем-то, что должно иметь стандарт раскладка.
В стандарте в разделе о модели памяти C ++ есть ненормативная заметка, в которой упоминается это:
[Примечание: различные функции языка, такие как ссылки и виртуальные функции, могут включать дополнительные области памяти, которые не доступны для программ, но управляются реализацией. —Конечная записка]
Других решений пока нет …