[英]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.