std :: unique_ptr使用带有很少参数的自定义删除器

普斯托瓦洛夫·德米特里

我想知道是否可以为std :: unique_ptr指定自定义删除器,并且使用多个参数(标准删除器签名)。我知道std :: shared_ptr与std :: bind存在变通办法,这使之成为可能,但std :: unique_ptr存在一些技巧吗?

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

类型要求-删除程序必须是FunctionObject或对FunctionObject的左值引用或对函数的左值引用,并且可以使用类型为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;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用std :: function对象将自定义删除器传递给std :: unique_ptr

来自分类Dev

使用std :: function对象将自定义删除器传递给std :: unique_ptr

来自分类Dev

带有lambda自定义删除程序的std :: unique_ptr无法编译

来自分类Dev

使用typedef为std :: unique_ptr指定自定义默认删除器

来自分类Dev

std :: unique_ptr <T []>和自定义分配器删除器

来自分类Dev

std :: unique_ptr,自定义删除器和类型更改

来自分类Dev

如何将自定义删除器与std :: unique_ptr成员一起使用?

来自分类Dev

我可以使用自定义删除器简洁地声明std :: unique_ptr吗?

来自分类Dev

自定义删除程序以通过std :: unique_ptr释放2D数组

来自分类Dev

使用带有分配器的std :: unique_ptr

来自分类Dev

如何制作将函数包装在noexcept可检测的可调用对象中的类模板,以用作std :: unique_ptr自定义删除器?

来自分类Dev

std :: unique_ptr的自定义删除程序是否是手动调用析构函数的有效位置?

来自分类Dev

使用带有unique_ptr的自定义删除器

来自分类Dev

在派生类上使用带有自定义删除程序的std :: make_unique吗?

来自分类Dev

具有std :: function的std :: shared_ptr作为自定义删除器和分配器

来自分类Dev

将std :: make_unique与自定义删除器一起使用

来自分类Dev

在派生类上使用 std::make_unique 和自定义删除器?

来自分类Dev

参数std :: unique_ptr <T> &&的std :: move或std :: forward

来自分类Dev

unique_ptr 的有状态自定义删除器

来自分类Dev

铛,返回带有类型转换的std :: unique_ptr

来自分类Dev

带有 STL 容器的 C++ std::unique_ptr

来自分类Dev

如果A有析构函数,std :: unique_ptr <A>什么时候需要特殊的删除器?

来自分类Dev

使用带有自定义rng的std :: shuffle吗?

来自分类Dev

使用std :: unique_ptr的带有私有析构函数的Singleton

来自分类Dev

具有std :: unique_ptr的容器的访问器函数

来自分类Dev

BST与std :: unique_ptr:在参数中使用右值引用有什么区别?

来自分类Dev

std :: unique_ptr <T []>具有派生对象的数组,使用已删除的函数

来自分类Dev

std :: shared_ptr:未调用自定义删除器

来自分类Dev

std :: unique_ptr :: release()与std :: move()

Related 相关文章

  1. 1

    使用std :: function对象将自定义删除器传递给std :: unique_ptr

  2. 2

    使用std :: function对象将自定义删除器传递给std :: unique_ptr

  3. 3

    带有lambda自定义删除程序的std :: unique_ptr无法编译

  4. 4

    使用typedef为std :: unique_ptr指定自定义默认删除器

  5. 5

    std :: unique_ptr <T []>和自定义分配器删除器

  6. 6

    std :: unique_ptr,自定义删除器和类型更改

  7. 7

    如何将自定义删除器与std :: unique_ptr成员一起使用?

  8. 8

    我可以使用自定义删除器简洁地声明std :: unique_ptr吗?

  9. 9

    自定义删除程序以通过std :: unique_ptr释放2D数组

  10. 10

    使用带有分配器的std :: unique_ptr

  11. 11

    如何制作将函数包装在noexcept可检测的可调用对象中的类模板,以用作std :: unique_ptr自定义删除器?

  12. 12

    std :: unique_ptr的自定义删除程序是否是手动调用析构函数的有效位置?

  13. 13

    使用带有unique_ptr的自定义删除器

  14. 14

    在派生类上使用带有自定义删除程序的std :: make_unique吗?

  15. 15

    具有std :: function的std :: shared_ptr作为自定义删除器和分配器

  16. 16

    将std :: make_unique与自定义删除器一起使用

  17. 17

    在派生类上使用 std::make_unique 和自定义删除器?

  18. 18

    参数std :: unique_ptr <T> &&的std :: move或std :: forward

  19. 19

    unique_ptr 的有状态自定义删除器

  20. 20

    铛,返回带有类型转换的std :: unique_ptr

  21. 21

    带有 STL 容器的 C++ std::unique_ptr

  22. 22

    如果A有析构函数,std :: unique_ptr <A>什么时候需要特殊的删除器?

  23. 23

    使用带有自定义rng的std :: shuffle吗?

  24. 24

    使用std :: unique_ptr的带有私有析构函数的Singleton

  25. 25

    具有std :: unique_ptr的容器的访问器函数

  26. 26

    BST与std :: unique_ptr:在参数中使用右值引用有什么区别?

  27. 27

    std :: unique_ptr <T []>具有派生对象的数组,使用已删除的函数

  28. 28

    std :: shared_ptr:未调用自定义删除器

  29. 29

    std :: unique_ptr :: release()与std :: move()

热门标签

归档