title: Why are lambda arguments passed by value read-only in C++11?
body: <p>When a function takes an argument by value, it can usually modify it. However, this does not seem to be the case with lambdas. Why?</p>
  
  <pre><code>int main()
  {
    int x = 0;
    auto lambda = [x] { x = 1; }; // error: assignment of read-only variable ‘x’
    return 0;
  }
  </code></pre>