https://github.com/boostorg/smart_ptr/issues/115
https://github.com/boostorg/smart_ptr/commit/e7433ba54596da97cb7859455cd37ca140305a9c

From e7433ba54596da97cb7859455cd37ca140305a9c Mon Sep 17 00:00:00 2001
From: Peter Dimov <pdimov@gmail.com>
Date: Mon, 13 Jan 2025 16:13:04 +0200
Subject: [PATCH] Fix operator<< for shared_ptr and intrusive_ptr. Fixes #115.

---
 include/boost/smart_ptr/intrusive_ptr.hpp | 2 +-
 include/boost/smart_ptr/shared_ptr.hpp    | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git boost/smart_ptr/intrusive_ptr.hpp boost/smart_ptr/intrusive_ptr.hpp
index ddb20c0b0e..11b476513a 100644
--- a/boost/smart_ptr/intrusive_ptr.hpp
+++ b/boost/smart_ptr/intrusive_ptr.hpp
@@ -285,7 +285,7 @@ template<class T, class U> intrusive_ptr<T> dynamic_pointer_cast( intrusive_ptr<
 
 // operator<<
 
-template<class Y> std::ostream & operator<< (std::ostream & os, intrusive_ptr<Y> const & p)
+template<class E, class T, class Y> std::basic_ostream<E, T> & operator<< (std::basic_ostream<E, T> & os, intrusive_ptr<Y> const & p)
 {
     os << p.get();
     return os;
diff --git boost/smart_ptr/shared_ptr.hpp boost/smart_ptr/shared_ptr.hpp
index 2431a33590..2deed9b632 100644
--- a/boost/smart_ptr/shared_ptr.hpp
+++ b/boost/smart_ptr/shared_ptr.hpp
@@ -775,7 +775,7 @@ template<class T> inline typename shared_ptr<T>::element_type * get_pointer(shar
 
 // operator<<
 
-template<class Y> std::ostream & operator<< (std::ostream & os, shared_ptr<Y> const & p)
+template<class E, class T, class Y> std::basic_ostream<E, T> & operator<< (std::basic_ostream<E, T> & os, shared_ptr<Y> const & p)
 {
     os << p.get();
     return os;

