` 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
8
задан Xeo 9 August 2012 в 15:59
поделиться