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