Почему размер ссылочного типа дает вам размер типа?
Согласно стандарту, в [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)
по определению?