有没有标准的删除函子?

时间:2010-04-27 19:33:04

标签: c++ functor delete-operator

我正在寻找一个删除其参数的仿函数:

template<class T>
struct delete_functor
{
    void operator()(T* p)
    {
        delete p;
    }
};

stdtr1boost中是否有这样的内容?

3 个答案:

答案 0 :(得分:10)

C ++ 0x会将std::default_delete添加到标准库以支持std::unique_ptr

它实际上具有与delete_functor相同的功能,但也专门为数组类型对象调用delete[]

答案 1 :(得分:2)

答案 2 :(得分:0)

我们不允许在公司使用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-&gt; ~_Type();”只打电话给dtor。例如,您可以使用内存管理器和新位置。