とにかく私はの削除者に引数を送ることができます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)
(明らかに上記の構文は間違っていますが、追加の引数を取るために削除機能が必要であることを強調するだけです。)
削除者として渡す前に、削除者の2番目の引数を指定でき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);
または、ラムダ式を使用することもできます。
std::shared_ptr<A> myA(a, [](A* a){ myDeleter(a, 5); });