有没有办法向 std::shared_ptr
的删除器传递参数?
类似以下的方式:
std::shared_ptr<A> myA( a, myDeleter(a, 5) );
其中myDeleter
具有以下签名:
void myDeleter(A* a, int i)
(显然上面的语法是错误的,但只是强调我需要我的删除器带有额外的参数。)
有没有办法向 std::shared_ptr
的删除器传递参数?
类似以下的方式:
std::shared_ptr<A> myA( a, myDeleter(a, 5) );
其中myDeleter
具有以下签名:
void myDeleter(A* a, int i)
std::bind
绑定它的第二个参数作为删除器:auto deleter = std::bind(myDeleter, std::placeholders::_1, 5);
std::shared_ptr<A> myA(a, deleter);
或者,你的删除器可以是一个通过其构造函数采用int
的函数对象:
struct myDeleter
{
myDeleter(int);
void operator()(A*);
};
myDeleter deleter(5);
std::shared_ptr<A> myA(a, deleter);
或者您可以使用lambda表达式:
std::shared_ptr<A> myA(a, [](A* a){ myDeleter(a, 5); });