2010-04-27 125 views
6

我要寻找一个删除其参数函子:有没有标准的删除函数?

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

有没有这样的事情在stdtr1boost

+1

如果你自己写这个,btw,然后用'struct delete_functor {template void operator()(T * p){delete p; }};',你创建一个时不需要指定T. – 2010-04-27 20:44:01

+0

@Steve酷。很高兴知道! – fredoverflow 2010-04-27 21:13:21

回答

10

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

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

+1

谢谢,作品像魅力! – fredoverflow 2010-04-27 19:54:07

+0

'std :: default_delete ()'做了什么? – user1095108 2013-07-11 16:16:34

+0

@ user1095108:如果'operator()'被实例化,那么程序将不合格。实例化default_delete类型的类型在实例化类模板时可能是不完整的,但当operator()被实例化时它必须完成。 – 2013-07-11 16:42:59

0

我们不允许在我公司使用升压,而我们没有使用C++ 11任,所以我用这个:

我想这就是你要找的。

您也可以将其重新创建为dtor_fun_t并替换“delete _ ptr;”由“ _ptr->〜_Type();”只打电话给Dtor。例如,您使用内存管理器和放置位置时就是这种情况。