Imported Upstream version 1.72.0
[platform/upstream/boost.git] / boost / histogram / detail / type_name.hpp
index 25950bc..bea8f88 100644 (file)
@@ -9,7 +9,6 @@
 
 #include <boost/core/typeinfo.hpp>
 #include <boost/type.hpp>
-#include <sstream>
 #include <string>
 
 namespace boost {
@@ -17,31 +16,28 @@ namespace histogram {
 namespace detail {
 
 template <class T>
-std::ostream& type_name_impl(std::ostream& os, boost::type<T>) {
-  os << boost::core::demangled_name(BOOST_CORE_TYPEID(T));
-  return os;
+std::string type_name_impl(boost::type<T>) {
+  return boost::core::demangled_name(BOOST_CORE_TYPEID(T));
 }
 
 template <class T>
-std::ostream& type_name_impl(std::ostream& os, boost::type<const T>) {
-  return type_name_impl(os, boost::type<T>{}) << " const";
+std::string type_name_impl(boost::type<const T>) {
+  return type_name_impl(boost::type<T>{}) + " const";
 }
 
 template <class T>
-std::ostream& type_name_impl(std::ostream& os, boost::type<T&>) {
-  return type_name_impl(os, boost::type<T>{}) << "&";
+std::string type_name_impl(boost::type<T&>) {
+  return type_name_impl(boost::type<T>{}) + " &";
 }
 
 template <class T>
-std::ostream& type_name_impl(std::ostream& os, boost::type<T&&>) {
-  return type_name_impl(os, boost::type<T>{}) << "&&";
+std::string type_name_impl(boost::type<T&&>) {
+  return type_name_impl(boost::type<T>{}) + " &&";
 }
 
 template <class T>
 std::string type_name() {
-  std::ostringstream os;
-  type_name_impl(os, boost::type<T>{});
-  return os.str();
+  return type_name_impl(boost::type<T>{});
 }
 
 } // namespace detail