Capturing a lambda in another lambda can violate const qualifiers : <p>Consider the following code:</p>

<pre><code>int x = 3;
auto f1 = [x]() mutable
{
    return x++;
};
auto f2 = [f1]()
{
    return f1();
};
</code></pre>

<p>This will not compile, because <code>f1()</code> is not const, and <code>f2</code> is not declared as mutable. Does this mean that if I have a library function that accepts an arbitrary function argument and captures it in a lambda, I always need to make that lambda mutable, because I don't know what users can pass in? Notably, wrapping <code>f1</code> in <code>std::function</code> seems to resolve this problem (how?).</p>
