diff --git a/libs/util/include/psemek/util/type_name.hpp b/libs/util/include/psemek/util/type_name.hpp index cf91ff64..8b8a5ffe 100644 --- a/libs/util/include/psemek/util/type_name.hpp +++ b/libs/util/include/psemek/util/type_name.hpp @@ -21,4 +21,19 @@ namespace psemek::util return type_name(typeid(x)); } + template + struct dynamic_ptr + { + T * ptr; + }; + + template + auto & operator << (OStream & os, dynamic_ptr const & d) + { + if (!d.ptr) + return os << d.ptr; + else + return os << "<" << type_name(*d.ptr) << " " << d.ptr << ">"; + } + }