#include using namespace boost::interprocess; struct poly_deleter { template void operator()(T *p) { delete p; } }; typedef unique_ptr u_ptr; u_ptr func() { return u_ptr(); } int main() { u_ptr u; u = func(); }