Change IsNull and NotNull to use ==/!= nullptr in C++11.
Also update gmock_doctor due to Clang wording change.
diff --git a/include/gmock/gmock-matchers.h b/include/gmock/gmock-matchers.h
index 6450f9b..822337b 100644
--- a/include/gmock/gmock-matchers.h
+++ b/include/gmock/gmock-matchers.h
@@ -979,7 +979,11 @@
   template <typename Pointer>
   bool MatchAndExplain(const Pointer& p,
                        MatchResultListener* /* listener */) const {
+#if GTEST_LANG_CXX11
+    return p == nullptr;
+#else  // GTEST_LANG_CXX11
     return GetRawPointer(p) == NULL;
+#endif  // GTEST_LANG_CXX11
   }
 
   void DescribeTo(::std::ostream* os) const { *os << "is NULL"; }
@@ -995,7 +999,11 @@
   template <typename Pointer>
   bool MatchAndExplain(const Pointer& p,
                        MatchResultListener* /* listener */) const {
+#if GTEST_LANG_CXX11
+    return p != nullptr;
+#else  // GTEST_LANG_CXX11
     return GetRawPointer(p) != NULL;
+#endif  // GTEST_LANG_CXX11
   }
 
   void DescribeTo(::std::ostream* os) const { *os << "isn't NULL"; }
diff --git a/scripts/gmock_doctor.py b/scripts/gmock_doctor.py
index e6e6a52..c6a8a90 100755
--- a/scripts/gmock_doctor.py
+++ b/scripts/gmock_doctor.py
@@ -362,7 +362,7 @@
                r'which is of non-class type \'(.*::)*(?P<class_name>.+)\*\'')
   clang_regex = (_CLANG_FILE_LINE_RE + r'error: member reference type '
                  r'\'(?P<class_name>.*?) *\' is a pointer; '
-                 r'maybe you meant to use \'->\'\?')
+                 r'(did you mean|maybe you meant) to use \'->\'\?')
   diagnosis = """
 The first argument to ON_CALL() and EXPECT_CALL() must be a mock *object*,
 not a *pointer* to it.  Please write '*(%(mock_object)s)' instead of
diff --git a/test/gmock-matchers_test.cc b/test/gmock-matchers_test.cc
index be2e900..494c85f 100644
--- a/test/gmock-matchers_test.cc
+++ b/test/gmock-matchers_test.cc
@@ -1025,6 +1025,15 @@
   EXPECT_FALSE(m.Matches(non_null_p));
 }
 
+#if GTEST_LANG_CXX11
+TEST(IsNullTest, StdFunction) {
+  const Matcher<std::function<void()>> m = IsNull();
+
+  EXPECT_TRUE(m.Matches(std::function<void()>()));
+  EXPECT_FALSE(m.Matches([]{}));
+}
+#endif  // GTEST_LANG_CXX11
+
 TEST(IsNullTest, ReferenceToConstScopedPtr) {
   const Matcher<const scoped_ptr<double>&> m = IsNull();
   const scoped_ptr<double> null_p;
@@ -1073,6 +1082,15 @@
   EXPECT_TRUE(m.Matches(non_null_p));
 }
 
+#if GTEST_LANG_CXX11
+TEST(NotNullTest, StdFunction) {
+  const Matcher<std::function<void()>> m = NotNull();
+
+  EXPECT_TRUE(m.Matches([]{}));
+  EXPECT_FALSE(m.Matches(std::function<void()>()));
+}
+#endif  // GTEST_LANG_CXX11
+
 TEST(NotNullTest, ReferenceToConstScopedPtr) {
   const Matcher<const scoped_ptr<double>&> m = NotNull();
   const scoped_ptr<double> null_p;