title: `auto` specifier type deduction for references
body: <p>Let's consider the following code snippet</p>
  
  <pre><code>void Test()
    {
    int x = 0;
  
    int&amp; rx = x;
    int* px = &amp;x;
  
    auto apx = px;    // deduced type is int*
    auto arx = rx;    // deduced type is int
    }
  </code></pre>
  
  <p>One could draw an analogy from pointer types expecting that the deduced type of <code>arx</code> is <code>int&amp;</code>, but it is <code>int</code> in fact. </p>
  
  <p>What is the rule in Standard which governs that? What is the reason behind it?
  Sometimes I get caught by it in a case like this:</p>
  
  <pre><code>const BigClass&amp; GetBigClass();
  ...
  auto ref_bigclass = GetBigClass();   // unexpected copy is performed
  </code></pre>