2015-12-26 68 views
3

我不知道是否有可能指定自定義刪除std :: unique_ptr與多個參數(標準刪除簽名)。我知道std :: shared_ptr存在std :: bind的解決方法,這使得它成爲可能,但是std :: unique_ptr存在一些技巧嗎?std :: unique_ptr使用自定義刪除與幾個參數

對我來說好像這不是因爲根據http://en.cppreference.com/w/cpp/memory/unique_ptr

類型要求 -Deleter必須是函數對象或左值引用一個函數對象或左值引用函數,調用類型的unique_ptr的 參數: :指針

+2

使用'的std :: bind'創建1個參數函數對象傳遞給'的std :: unique_ptr'型 – Danh

回答

5
void my_free(int* p, int x, int y){ 
    std:: cout << x << " " << y << "\n"; 
} 
int main() 
{ 
    auto my_deleter = std::bind(my_free, std::placeholders::_1, 1, 2) ; 
    auto my_lambda = [](int* t) { my_free(t, 3, 4); }; 
    std::unique_ptr<int, decltype(my_deleter)> ptr(new int, my_deleter); 
    std::unique_ptr<int, decltype(my_lambda)> ptr2(new int, my_lambda); 
    return 0; 
} 
+0

謝謝,它的工作原理。 –

相關問題