Почему размер ссылочного типа дает вам размер типа?

Согласно стандарту, в [expr.sizeof] (5.3.3.2) мы получаем:

При применении к ссылке или ссылочному типу результатом является размер ссылочного типа.

Это похоже на тот факт, что ссылки не определены [dcl.ref] (8.3.2.4):

Не указано, требуется ли ссылка для хранения

Но мне кажется довольно странным иметь такого рода противоречия в языке. Независимо от того, требует ли ссылка хранения, не важно ли иметь возможность определить, какой размер использует ссылка? Видеть эти результаты просто неправильно:

sizeof(vector<int>) == 24
sizeof(vector<int>*) == 8
sizeof(vector<int>&) == 24
sizeof(reference_wrapper<vector<int>>) == 8

В чем причина желанияsizeof(T&) == sizeof(T) по определению?

Ответы на вопрос(3)

Ваш ответ на вопрос