関数への参照をバインドする場合はf
、 を使用できますstd::bind(f, std::ref(x))
。この場合f
、参照を取得するか、コピーを作成します。
今私は関数を持っていますvoid g(T & t)
。入力引数を次のようにバインドしたいと思いstd::shared_ptr<T> mySharedPtr
ます: std::bind(g, mySharedPtr)
。mySharedPtr
これにより、のデータが少なくともバインドと同じだけ存続することが保証されます。ただしg
、参照を取るため、これは型チェックを行いません。
に渡す前にstd::ref
a を取り、それを逆参照するのに似たものはありますか? そうでない場合は、自分で作成できますか?std::shared_ptr
g
(ラムダを使用して回答する場合は、コンパイラがサポートしていないため、ラムダを使用しないものも含めてください。)
編集:std::bind(g, std::ref(*mySharedPtr))
の生涯保証が失われるため、機能しませんstd::shared_ptr
。