f
함수에 대한 참조를 바인딩하려면 std::bind(f, std::ref(x))
을 사용할 수 있습니다. 이 경우 f
은 참조를 받거나 사본을 만듭니다.std :: shared_ptrs에 대한 std :: reference_wrapper의 병렬 처리
이제는 기능이 void g(T & t)
입니다. 입력 인수를 std::shared_ptr<T> mySharedPtr
(예 : std::bind(g, mySharedPtr)
)에 바인딩하고 싶습니다. 이렇게하면 mySharedPtr
의 데이터가 최소한 바인드만큼의 수명을 갖게됩니다. 그러나 g
이 참조를 취하고 있기 때문에 유형 확인을하지 않습니다.
std::ref
과 비슷한 항목이 std::shared_ptr
이며 g
에 전달하기 전에 역 참조합니까? 그렇지 않다면 내가 직접 만들 수 있을까요?
은 (는 람다를 사용하여 대답을하면 내 컴파일러를 지원하지 않기 때문에, 또한 람다없이 하나를 포함하시기 바랍니다.)
편집 : 그것은 std::shared_ptr
의 수명 보증을 상실하기 때문에 std::bind(g, std::ref(*mySharedPtr))
이 작동하지 않습니다.
C++ 11? 'g' 포장은 괜찮습니까? – Yakk
람다를 사용하면'g'를 감쌀 것입니다. 불행히도 나는 그렇게하지 않는다. 그래서 바인딩하기 전에 각'g'와 같은 함수를 수동으로 포장해야 할 것이다. –