2010-04-27 67 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。例如,您使用內存管理器和放置位置時就是這種情況。

相關問題