title: Prohibit capture by reference
body: <p>Is there a tricky way to prevent an object from being captured by reference into a lamba?  For example, I'd like to disallow this:</p>
  
  <pre><code>class A {};
  
  void Foo()
  {
      A a;
      auto lamda = [&amp;a](){};      // Disallow this
      // give lambda to async process
      // use A to help know when the lamda finally gets called
  }
  </code></pre>
  
  <p>I want to prevent this because <code>A</code> could be easily misused in this context, so I'd like to prevent the user from harming themselves.  One could argue that any class can be misused, but given <code>A</code>'s contract it is <em>really</em> tempting for a user to do this.  I have the freedom to wrap, change, and otherwise obfuscate A as much as needed.
  <hr>
  <strong>Edit</strong></p>
  
  <p>After the lambda is created it is handed off to an asynchronous process while the current thread waits inline until that asynchronous process has completed.  <code>A</code> is a class to help know when the async operation completes (think <code>boost::future</code>).</p>