Add util::dynamic_ptr with stream output operator that shows dynamic type of referenced object
This commit is contained in:
parent
ebdd90c520
commit
c8eaf4abe0
1 changed files with 15 additions and 0 deletions
|
|
@ -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 << ">";
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue