3

関数への参照をバインドする場合はf、 を使用できますstd::bind(f, std::ref(x))。この場合f、参照を取得するか、コピーを作成します。

今私は関数を持っていますvoid g(T & t)。入力引数を次のようにバインドしたいと思いstd::shared_ptr<T> mySharedPtrます: std::bind(g, mySharedPtr)mySharedPtrこれにより、のデータが少なくともバインドと同じだけ存続することが保証されます。ただしg、参照を取るため、これは型チェックを行いません。

に渡す前にstd::refa を取り、それを逆参照するのに似たものはありますか? そうでない場合は、自分で作成できますか?std::shared_ptrg

(ラムダを使用して回答する場合は、コンパイラがサポートしていないため、ラムダを使用しないものも含めてください。)

編集:std::bind(g, std::ref(*mySharedPtr))の生涯保証が失われるため、機能しませんstd::shared_ptr

4

1 に答える 1