diff --git a/include/xo/reflect/TypeDescr.hpp b/include/xo/reflect/TypeDescr.hpp index 8896ed3..d39d64e 100644 --- a/include/xo/reflect/TypeDescr.hpp +++ b/include/xo/reflect/TypeDescr.hpp @@ -99,21 +99,28 @@ namespace xo { * * Example * T * p = new T(...); - * DestructorAux::dtor(p); + * InvokerAux::dtor(p); **/ template struct InvokerAux : public Invoker { virtual void dtor(void * addr) const override { - T * obj = static_cast(addr); + T * obj = reinterpret_cast(addr); obj->~T(); } }; + /** no dtor for void **/ template<> struct InvokerAux : public Invoker { virtual void dtor(void *) const override {} }; + + /** no dtor for function types **/ + template + struct InvokerAux : public Invoker { + virtual void dtor(void *) const override {} + }; } /*namespace detail*/ } /*namespace reflect*/ } /*namespace xo*/