मैं देख रहा था कि कैसे std::tr1::shared_ptr<>
बूल डालने की क्षमता प्रदान करता है। मैंने पहले भी बाहर पकड़ा गया है कि जब एक स्मार्ट सूचक है कि तुच्छ समाधान के रूप में bool करने के लिए casted जा सकता है, यानीshare_ptr <> सुरक्षित रूप से बूल को कास्टिंग करने की अनुमति कैसे देता है?
operator bool() {
return m_Ptr!=0;
}
आमतौर पर परोक्ष सूचक प्रकार के castable किया जा रहा समाप्त होता है बनाने का प्रयास कर (शायद प्रकार पदोन्नति द्वारा), जो आमतौर पर अवांछनीय है। बूस्ट और माइक्रोसॉफ्ट कार्यान्वयन दोनों एक unspecified_bool_type()
पर कास्टिंग शामिल एक चाल का उपयोग करने लगते हैं। क्या कोई यह समझा सकता है कि यह तंत्र कैसे काम करता है और यह अंतर्निहित सूचक प्रकार को अंतर्निहित कास्टिंग कैसे रोकता है?
सभी महान उत्तरों, धन्यवाद। इसे भी नाम देने में सक्षम होना अच्छा - पहले सुरक्षित बूल मुहावरे में नहीं आया था। –