Add util::dynamic_ptr with stream output operator that shows dynamic type of referenced object

This commit is contained in:
Nikita Lisitsa 2022-05-25 22:54:14 +03:00
parent ebdd90c520
commit c8eaf4abe0

View file

@ -21,4 +21,19 @@ namespace psemek::util
return type_name(typeid(x));
}
template <typename T>
struct dynamic_ptr
{
T * ptr;
};
template <typename OStream, typename T>
auto & operator << (OStream & os, dynamic_ptr<T> const & d)
{
if (!d.ptr)
return os << d.ptr;
else
return os << "<" << type_name(*d.ptr) << " " << d.ptr << ">";
}
}