Нам не разрешено использовать boost в моей компании, и мы также не используем C ++ 11, поэтому я использую это:
namespace
{
// - for use to deletion:
// std::vector<int*> foobar;
// std::for_each(foobar.begin(), fooabr.end(), del_fun<T>());
template<class _Type>
struct del_fun_t:
public unary_function<_Type*, void>
{
void operator()(_Type* __ptr) {
delete __ptr;
}
};
template<class _Type>
del_fun_t<_Type> del_fun()
{
return del_fun_t<_Type>();
};
};
Я думаю, это то, что вы ищете.
Вы также можете воссоздать его как dtor_fun_t и заменить "delete _ ptr;" от " _ptr-> ~ _Type ();" только позвонить дтору. Это может быть тот случай, когда вы использовали менеджер памяти и новое размещение, например.