title: A positive lambda: '+[]{}' - What sorcery is this?
body: <p>In Stack Overflow question <em><a href="https://stackoverflow.com/questions/18755787">Redefining lambdas not allowed in C++11, why?</a></em>, a small program was given that does not compile:</p>
  
  <pre><code>int main() {
      auto test = []{};
      test = []{};
  }
  </code></pre>
  
  <p>The question was answered and all seemed fine. Then came <a href="https://stackoverflow.com/users/34509">Johannes Schaub</a> and made <a href="https://stackoverflow.com/questions/18755787/redefining-lambdas-not-allowed-in-c11-why#comment27726224_18755787">an interesting observation</a>:</p>
  
  <blockquote>
    <p>If you put a <code>+</code> before the first lambda, it magically starts to work.</p>
  </blockquote>
  
  <p>So I'm curious: Why does the following work?</p>
  
  <pre><code>int main() {
      auto test = +[]{}; // Note the unary operator + before the lambda
      test = []{};
  }
  </code></pre>
  
  <p>It compiles fine with both <a href="http://en.wikipedia.org/wiki/GNU_Compiler_Collection" rel="noreferrer">GCC</a> 4.7+ and <a href="http://en.wikipedia.org/wiki/Clang" rel="noreferrer">Clang</a> 3.2+. Is the code standard conforming?</p>