Or, C++ gives you speed and low-level control at the cost of some extra complexity.
Personally I prefer the C++0x closures precisely because of the reference/value capturing distinction.
Also, the requirement to add an empty parameter list whenever there's something between [] and {} amounts to extra complexity. This seems to be a purely syntactical dismbiguation thing as neither the mutable qualifier nor the return type should be related to an empty parameter list.
We have to realise what complexity is. Part of it is having to think of B whenver we do A even though we do not wish to say anything about B at all.