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));
|
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