其他分享
首页 > 其他分享> > c – std :: unique_ptr使用自定义删除器,参数很少

c – std :: unique_ptr使用自定义删除器,参数很少

作者:互联网

我想知道是否可以使用多个参数(标准删除签名)为std :: unique_ptr指定自定义删除器.我知道使用std :: shared_ptr存在与std :: bind的解决方法,这使得它成为可能但是std :: unique_ptr存在的一些技巧?

对我来说似乎不是因为根据http://en.cppreference.com/w/cpp/memory/unique_ptr

Type requirements
-Deleter must be FunctionObject or lvalue reference to a FunctionObject or lvalue reference to function, callable with an
argument of type unique_ptr::pointer

解决方法:

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;
}

标签:c,c11,unique-ptr
来源: https://codeday.me/bug/20190829/1761203.html