- 主题:分享个万能资源管理类UniqueResource
欢迎拍砖并帮忙改进
github dot com /z16166/UniqueResource
受std::experimental::unique_resource这个提案的启发
--
FROM 221.220.171.*
原来是gsl-lite的作者。
他这个实现代码里为了兼容各种情形,看着好头大
我一般用unique resource,外加SCOPE_EXIT{}宏,再加上点helper class。
【 在 hanjiamajia 的大作中提到: 】
:
: 代码写的很好,学习了
: RAII Wrapper 实现挺多的,平时用的多的是这个 github dot com /martinmoene/scope-lite
: ...................
--
修改:z16166 FROM 221.220.171.*
FROM 221.220.171.*
make_scope_exit()返回一个临时变量,这个变量一般是用宏来自动命名的。
要是手动给每个这样的临时变量命名,那会很繁琐。
【 在 DoorWay 的大作中提到: 】
: 宏劝退
--
FROM 221.220.171.*
每个资源有3个东西:类型、默认值、清理函数,
1、类型是通过模板参数传入的,
2、默认值、清理函数通过traits提供,可以扩展自己的traits。
就Windows平台举例,有很多资源的类型都是HANDLE,
但默认值有NULL的,也有INVALID_HANDLE_VALUE的,这应该是MS内部各个team不统一的锅。
清理函数有CloseHandle()的,也有FindClose()的。
你可以用unique_ptr<> 加一个 wrapper,处理一下这些试试,
就是说,我传递进来一个HANDLE,是要调用CloseHandle()来关闭它,还是用FindClose()关闭呢?
【 在 mango7788 的大作中提到: 】
: 这个干嘛用的?和 unique_ptr<> 加一个 wrapper 有啥不同?
--
修改:z16166 FROM 221.220.171.*
FROM 221.220.171.*
等我瞅瞅。水木PC web老url貌似挂了,几天没刷水木了
【 在 ziqin 的大作中提到: 】
: 但是,这个不就是模板特化的用处么?用lambda更方便一些
: // primary template
: template<class resource_tag_t, class resource_t, class default_initator_t, class deleter_t>
: ...................
--
FROM 221.220.171.*