如果你要綁定到一個功能f
一個參考,你可以使用std::bind(f, std::ref(x))
。在這種情況下,f
需要參考或複印。並行的std ::對的reference_wrapper的std :: shared_ptrs
現在我有一個功能void g(T & t)
。我想將輸入參數綁定到std::shared_ptr<T> mySharedPtr
,如下所示:std::bind(g, mySharedPtr)
。這將保證mySharedPtr
的數據至少和綁定一樣長。但是由於g
需要參考,所以這不會進行類型檢查。
有沒有類似於std::ref
需要std::shared_ptr
並在將它傳遞給g
之前將其解除引用?如果不是,我可以自己做一個嗎?
(如果你給使用lambda表達式的答案,請還包括一個沒有lambda表達式,因爲我的編譯器不支持他們。)
編輯:std::bind(g, std::ref(*mySharedPtr))
不起作用,因爲它失去了std::shared_ptr
的終身保障。
C++ 11?包裹'g'會好嗎? – Yakk
如果我有lambda,包裝'g'肯定會起作用。不幸的是,我不這樣做,所以我必須在綁定每個'g'-like函數之前手動包裝它。 –