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

sp2danny

通过shared_ptr,您可以使用自定义删除器,例如:

auto fp = shared_ptr<FILE>( fopen("file.txt", "rt"), &fclose );
fprintf( fp.get(), "hello\n" );

并且fclose无论函数如何退出,这都会记住文件。
但是,重新引用一个局部变量似乎有点矫kill过正,所以我想使用unique_ptr

auto fp = unique_ptr<FILE>( fopen("file.txt", "rt"), &fclose );

但是,它不能编译。

这是缺陷吗?有没有简单的解决方法?我错过了一些琐碎的事情吗?

永远

应该

unique_ptr<FILE, int(*)(FILE*)>(fopen("file.txt", "rt"), &fclose);

http://en.cppreference.com/w/cpp/memory/unique_ptr

或者,由于您使用的是C ++ 11,因此您可以使用 decltype

std::unique_ptr<FILE, decltype(&fclose)>

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

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

来自分类Dev

unique_ptr 的有状态自定义删除器

来自分类Dev

将具有自定义删除器的unique_ptr移到shared_ptr

来自分类Dev

具有自定义删除器的unique_ptr构造函数被删除

来自分类Dev

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

来自分类Dev

混淆使用unique_ptr和自定义删除器

来自分类Dev

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

来自分类Dev

C ++ 11使用unique_ptr和自定义删除器

来自分类Dev

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

来自分类Dev

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

来自分类Dev

Typedef一个带有静态自定义删除器的shared_ptr类型,类似于unique_ptr

来自分类Dev

Typedef一个带有静态自定义删除器的shared_ptr类型,类似于unique_ptr

来自分类Dev

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

来自分类Dev

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

来自分类Dev

unique_ptr,自定义删除器和零规则

来自分类Dev

用unique_ptr和自定义删除器包装C代码

来自分类Dev

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

来自分类Dev

了解采用自定义删除器的unique_ptr的构造函数

来自分类Dev

初始化传递给unique_ptr自定义删除器的函子

来自分类Dev

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

来自分类Dev

如何为由 unique_ptr 管理的数组编写自定义删除器?

来自分类Dev

具有自定义删除程序类的STL向量和unique_ptr

来自分类Dev

配备有功能指针作为自定义删除器的unique_ptr是否与shared_ptr大小相同?

来自分类Dev

带有 lambda 删除器的 Unique_ptr

来自分类Dev

当使用“新”来初始化unique_ptr <FILE *,File :: Close>时,自定义删除器负责释放该内存吗?

来自分类Dev

如何为包装需要2个参数的ac函数的unique_ptr类成员创建自定义删除器?

来自分类Dev

智能指针(unique_ptr)自定义删除器错误C2027和C2338

来自分类Dev

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

来自分类Dev

具有自定义指针类型的unique_ptr:* get()和operator *()给出不同的输出

Related 相关文章

  1. 1

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

  2. 2

    unique_ptr 的有状态自定义删除器

  3. 3

    将具有自定义删除器的unique_ptr移到shared_ptr

  4. 4

    具有自定义删除器的unique_ptr构造函数被删除

  5. 5

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

  6. 6

    混淆使用unique_ptr和自定义删除器

  7. 7

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

  8. 8

    C ++ 11使用unique_ptr和自定义删除器

  9. 9

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

  10. 10

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

  11. 11

    Typedef一个带有静态自定义删除器的shared_ptr类型,类似于unique_ptr

  12. 12

    Typedef一个带有静态自定义删除器的shared_ptr类型,类似于unique_ptr

  13. 13

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

  14. 14

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

  15. 15

    unique_ptr,自定义删除器和零规则

  16. 16

    用unique_ptr和自定义删除器包装C代码

  17. 17

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

  18. 18

    了解采用自定义删除器的unique_ptr的构造函数

  19. 19

    初始化传递给unique_ptr自定义删除器的函子

  20. 20

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

  21. 21

    如何为由 unique_ptr 管理的数组编写自定义删除器?

  22. 22

    具有自定义删除程序类的STL向量和unique_ptr

  23. 23

    配备有功能指针作为自定义删除器的unique_ptr是否与shared_ptr大小相同?

  24. 24

    带有 lambda 删除器的 Unique_ptr

  25. 25

    当使用“新”来初始化unique_ptr <FILE *,File :: Close>时,自定义删除器负责释放该内存吗?

  26. 26

    如何为包装需要2个参数的ac函数的unique_ptr类成员创建自定义删除器?

  27. 27

    智能指针(unique_ptr)自定义删除器错误C2027和C2338

  28. 28

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

  29. 29

    具有自定义指针类型的unique_ptr:* get()和operator *()给出不同的输出

热门标签

归档