#### Using Callbacks as Matchers Callbacks are widely used in `google3`. Conceptually, a `ResultCallback1` is just a predicate on argument of type `T`. Naturally, we sometimes would want to use such a callback as a matcher. gMock gives you two function templates in namespace `testing` to turn callbacks into matchers. The first is `Truly(callback)`. It matches `argument` iff `callback->Run(argument)` returns `true`. The second is `AddressSatisfies(callback)`, which matches `argument` whenever `callback->Run(&argument)` returns `true`. The callbacks used in `Truly()` and `AddressSatisfies()` must be permanent (e.g. those returned by `NewPermanentCallback()`), or you'll get a run-time error. The matcher takes ownership of the callback, so you don't need to worry about deleting it. For examples, see google3/testing/base/internal/gmock_utils/callback-matchers_test.cc.