This really captures the core difference between the two languages. C++ is overly versatile to the point of being cumbersome whereas Obj-C imposes sensible limitations for the sake of handling the common use cases much better.
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.