我正在研究std::tr1::shared_ptr<>
如何提供投射到布尔的能力。我想(大概是通过类型提升创建一个智能指针,可以铸造到bool作为平凡解,即shared_ptr <>如何安全地允许转换为bool?
operator bool() {
return m_Ptr!=0;
}
通常最终被隐式强制转换为指针类型时,过去被抓住了),这通常是不希望的。助推器和微软的实施似乎都使用涉及铸造到unspecified_bool_type()
的技巧。任何人都可以解释这种机制如何工作,以及如何防止隐式转换为基础指针类型?
所有优秀的答案,谢谢。很高兴能够给它起一个名字 - 没有遇到过安全的布尔成语。 – 2010-07-07 10:24:20