5 template <
typename T>
class autofree_ptr {
7 autofree_ptr(T *p, std::function<
void(T *)> ffn) : ptr(p), free_fn(ffn)
10 autofree_ptr(std::function<
void(T *)> ffn) : free_fn(ffn)
14 autofree_ptr(autofree_ptr &&other)
17 free_fn = other.free_fn;
20 autofree_ptr &operator=(autofree_ptr &&) =
delete;
22 autofree_ptr(autofree_ptr
const &) =
delete;
23 autofree_ptr &operator=(autofree_ptr
const &) =
delete;
26 std::function<void(T *)> free_fn;