Lines Matching defs:Super
809 // Super below) can be instantiated to either a const type or a
817 template <typename Super>
818 operator Matcher<Super&>() const {
819 // By passing object_ (type T&) to Impl(), which expects a Super&,
820 // we make sure that Super is a super type of T. In particular,
824 return MakeMatcher(new Impl<Super>(object_));
828 template <typename Super>
829 class Impl : public MatcherInterface<Super&> {
831 explicit Impl(Super& x) : object_(x) {} // NOLINT
833 // MatchAndExplain() takes a Super& (as opposed to const Super&)
834 // in order to match the interface MatcherInterface<Super&>.
835 bool MatchAndExplain(Super& x,
843 UniversalPrinter<Super&>::Print(object_, os);
848 UniversalPrinter<Super&>::Print(object_, os);
852 const Super& object_;