diff --git a/src/language/utils/OStream.hpp b/src/language/utils/OStream.hpp index d9410e25e35d2a3e9d5ac147911f6464d3b71eb7..bef02277ef8e07be09cc5731b33c6f5c3363e37d 100644 --- a/src/language/utils/OStream.hpp +++ b/src/language/utils/OStream.hpp @@ -23,6 +23,17 @@ class OStream return os; } + template <typename DataT> + friend std::shared_ptr<const OStream> + operator<<(const std::shared_ptr<const OStream>& os, const std::shared_ptr<const DataT>& t) + { + Assert(os.use_count() > 0, "non allocated stream"); + if (os->m_ostream != nullptr) { + *os->m_ostream << *t; + } + return os; + } + OStream(std::ostream& os) : m_ostream(&os) {} OStream() = default;