`auto` тип удержания для ссылок
Давайте рассмотрим следующий фрагмент кода
void Test()
{
int x = 0;
int& rx = x;
int* px = &x;
auto apx = px; // deduced type is int*
auto arx = rx; // deduced type is int
}
Можно провести аналогию с типами указателей, ожидая, что выведенный типarx
являетсяint&
, но этоint
по факту.
Какое правило в Стандарте регулирует это? В чем причина этого? Иногда я попадаюсь на такой случай:
const BigClass& GetBigClass();
...
auto ref_bigclass = GetBigClass(); // unexpected copy is performed