我想知道是否可以为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] 删除。
我来说两句