Base: Delete ostream<< with std::string*

In most reasonable cases, this is actually a bug. So delete the
operator overload and let the compiler complain.

Test: m
Change-Id: I7d66ec2f33cc46588b6f549876241871f19ce995
diff --git a/base/include/android-base/logging.h b/base/include/android-base/logging.h
index 548b286..f18cc0c 100644
--- a/base/include/android-base/logging.h
+++ b/base/include/android-base/logging.h
@@ -438,4 +438,14 @@
 }  // namespace base
 }  // namespace android
 
+namespace std {
+
+// Delete << with string* to avoid mistakes. The intention was most likely to print *string.
+// If you really want to print the pointer, consider static_cast<void*>.
+//
+// Note: for this to work, we need to have this in a namespace.
+std::ostream& operator<<(std::ostream& stream, const std::string* string_pointer) = delete;
+
+}  // namespace std
+
 #endif  // ANDROID_BASE_LOGGING_H