#pragma once template struct del_fun_t { del_fun_t& operator()(T* p) { delete p; return *this; } }; template del_fun_t del_fun() { return del_fun_t(); }