Ответ 1
Вы могли бы std::bind
изменить свой второй аргумент перед тем, как передать его как deleter:
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);
В качестве альтернативы вы можете использовать выражение лямбда:
std::shared_ptr<A> myA(a, [](A* a){ myDeleter(a, 5); });