[英]Why doesn't std::weak_ptr<> provide a bool conversion?
if(!wp.expired())
在多線程代碼中幾乎總是一個錯誤的檢查,因為在if
語句之后直接指針可能會到期。 因此,如果weak_ptr
與bool
轉換的語義完全相同,那么它永遠不會被使用。
如果要檢查指針是否處於活動狀態,請使用lock
並檢查獲取的shared_ptr
。
如果您想知道指針是否已死,請使用expired
。
如您所見,提供布爾轉換沒有意義。 對於shared_ptr
,它完全可以。 順便說一下,轉換運算符是explicit operator bool() const noexcept;
在C ++ 11中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.