types: Simplify ostream operators

We don't really care if it derives from ostream, just take any type.

Change-Id: Ifab0b7bd4476ddecc7fe80923b82f012a2974f47
Signed-off-by: William A. Kennington III <wak@google.com>
diff --git a/src/types.hpp b/src/types.hpp
index 342c8cc..fa75638 100644
--- a/src/types.hpp
+++ b/src/types.hpp
@@ -247,31 +247,22 @@
     return phosphor::network::detail::veq(rhs, lhs);
 }
 
-template <typename CharT, typename Traits>
-std::basic_ostream<CharT, Traits>&
-    operator<<(std::basic_ostream<CharT, Traits>& os, ether_addr v)
+auto& operator<<(auto& os, ether_addr v)
 {
     return os << phosphor::network::detail::AddrBufMaker<ether_addr>{}(v);
 }
 
-template <typename CharT, typename Traits>
-std::basic_ostream<CharT, Traits>&
-    operator<<(std::basic_ostream<CharT, Traits>& os, in_addr v)
+auto& operator<<(auto& os, in_addr v)
 {
     return os << phosphor::network::detail::AddrBufMaker<in_addr>{}(v);
 }
 
-template <typename CharT, typename Traits>
-std::basic_ostream<CharT, Traits>&
-    operator<<(std::basic_ostream<CharT, Traits>& os, in6_addr v)
+auto& operator<<(auto& os, in6_addr v)
 {
     return os << phosphor::network::detail::AddrBufMaker<in6_addr>{}(v);
 }
 
-template <typename CharT, typename Traits>
-std::basic_ostream<CharT, Traits>&
-    operator<<(std::basic_ostream<CharT, Traits>& os,
-               phosphor::network::InAddrAny v)
+auto& operator<<(auto& os, phosphor::network::InAddrAny v)
 {
     return os << std::visit(
                [](auto v) {