Решение использует Boost.Lambda:
#include <boost/shared_ptr.hpp>
#include <boost/lambda/lambda.hpp>
int main()
{
int *p = new int(5);
{
boost::shared_ptr<int> sp(p, boost::lambda::_1);
}
delete p;
}
'boost :: lambda :: _ 1' создает пустой функтор, который принимает один аргумент.
Вы, вероятно, захотите разместить там // комментарий, чтобы люди знали, почему вы это сделали.