Std :: shared_ptrを引数として受け取る関数があるため、std :: shared_ptrを使用せざるを得ませんが、関数に渡すオブジェクトは動的に割り当てられません。オブジェクトをstd :: shared_ptrでラップし、std :: shared_ptrでdeleteを呼び出さないようにするにはどうすればよいですか。
MyType t;
nasty_function(std::shared_ptr<MyType>(&t, [](MyType*){}));
共有ポインターを作成するときに、no-op deleterを指定します。例えば。このような:
void null_deleter(MyType *) {}
int main()
{
MyType t;
nasty_function(std::shared_ptr<MyType>(&t, &null_deleter));
}