+ };
+
+ template<typename Deleter>
+ struct reftype_with_deleter : public reftype
+ {
+ reftype_with_deleter(T* ptr, Deleter d) : reftype(ptr), m_deleter(d) {}
+ virtual void delete_ptr() { m_deleter(this->m_ptr); }
+
+ Deleter m_deleter;
+ };
+
+ reftype* m_ref;