/** ** \file misc/deref.hh ** \brief Automatically derefencing pointers on ostreams. **/ #pragma once #include #include namespace misc { enum deref_e { deref }; class Deref { protected: Deref(std::ostream&); public: template std::ostream& operator<<(const T* t) const; template std::ostream& operator<<(T* t) const; template std::ostream& operator<<(const ref& t) const; template std::ostream& operator<<(const T& t) const; template std::ostream& operator<<(T& t) const; protected: friend Deref operator<<(std::ostream&, deref_e); std::ostream& ostr_; }; Deref operator<<(std::ostream& ostr, deref_e); } // namespace misc #include