WebKit uses move semantics made possible by C++14 lambda expressions to move CompletionHandlerCallCheckers into the scope of the completion blocks sent to the WKUIDelegate. This is preferable to an ObjC-based solution since C++ allows greater certainty regarding when the object becomes out of scope and is deallocated. ObjC wrapper objects offer similar functionality, but due to reference counting, we can't guarantee when an object will be deallocated.
This can be accomplished only when the chromium C++ style guide permits usage of this C++14 feature.