但是,这个不就是模板特化的用处么?用lambda更方便一些
// primary template
template<class resource_tag_t, class resource_t, class default_initator_t, class deleter_t>
std::unique_ptr<resource_t, delete_r> make_unique_resource()
{
//..construct unique_ptr using resource_t/default_initiator_t/deleter_t
}
// user specialization
struct stdout_res;
template<class resoruce_tag_t>
requires std::same_as<resource_t, stdout_res>
auto make_unique_resource<stdout_res, type, initiator_lambda, deleter_lambda>(){}
【 在 z16166 的大作中提到: 】
: 每个资源有3个东西:类型、默认值、清理函数,
: 1、类型是通过模板参数传入的,
: 2、默认值、清理函数通过traits提供,可以扩展自己的traits。
: ...................
--
FROM 183.128.161.*