title: What does `auto && e` do in range-based for-loops?
body: <p>Assuming my current rule when programming with range-based loops says</p>
  
  <blockquote>
    <p>Use <code>for(auto const &amp;e :...)</code> or <code>for(auto &amp;e:...)</code> when possible over <code>for(auto a: ...)</code>.</p>
  </blockquote>
  
  <p>I base this on my own experience and <a href="https://stackoverflow.com/questions/15176104">this question</a> for example.</p>
  
  <p>But after reading about the new <a href="http://blogs.msdn.com/b/vcblog/archive/2014/11/12/details-about-some-of-the-new-c-language-features.aspx">terse for loops</a> I wonder, should I not replace my <code>&amp;</code> in my rule with <code>&amp;&amp;</code>? As written <a href="https://stackoverflow.com/questions/13230480">here</a> this looks like the <a href="http://isocpp.org/blog/2012/11/universal-references-in-c11-scott-meyers">Meyers' Universal References</a>.</p>
  
  <p>So, I ask myself, should my new rule either be</p>
  
  <blockquote>
    <p>Use <code>for(auto const &amp;&amp;e :...)</code> or <code>for(auto &amp;&amp;e:...)</code> when possible ...</p>
  </blockquote>
  
  <p>or does that not always work and therefore should rather be the quite complicated one</p>
  
  <blockquote>
    <p>Check if <code>for(auto const &amp;&amp;e :...)</code> or <code>for(auto &amp;&amp;e:...)</code> is possible, then consider <code>for(auto const &amp;e :...)</code> or <code>for(auto &amp;e:...)</code>, and only when needed do not use references.</p>
  </blockquote>