यह सबसे अधिक संभावना है आप -std = भूल C++ 0x। जीसीसी का मेरा मिंगव संस्करण 4.6.1/4.7.1 है, दोनों समर्थन nullptr अच्छी तरह से।
"सी ++ मानक पुस्तकालय, एक ट्यूटोरियल और संदर्भ, 2" में वर्णन के अनुसार, नलप्टर एक कीवर्ड है, स्वचालित रूप से प्रत्येक सूचक प्रकार में परिवर्तित हो सकता है लेकिन पूर्णांक प्रकार नहीं, यह न्यूल की कमी को दूर करता है, जो संदिग्ध है निम्नलिखित अधिभार समारोह: शून्य एफ (int); शून्य एफ (शून्य *);
एफ (एनयूएलएल); // अस्पष्ट एफ (नलप्टर); // ठीक
टेस्ट VC2010 में इस सुविधा से पता चलता वास्तविक संकलक के साथ MSDN दस्तावेज़ संघर्ष, दस्तावेज़ कहा कि:
nullptr कीवर्ड एक प्रकार नहीं है और साथ प्रयोग के लिए समर्थित नहीं है:
sizeof
typeid
फेंक nullptr
VC2010 में वास्तव में
, ऊपर ऑपरेटर/एक्सप्रेस के सभी आयन कानूनी है। sizeof (nullptr) परिणाम 4. typeid.name() परिणाम std :: nullptr_t, और फेंक नलप्टर को "कॉन्स्ट शून्य *" और "शून्य *" (और अन्य सूचक प्रकार) द्वारा पकड़ा जा सकता है।
जीसीसी (4.7.1) nullptr के बारे में और अधिक कठोर लग रहा है, वहीं फेंक nullptr "शून्य *" द्वारा पकड़ा नहीं किया जा सकता, द्वारा 'पकड़ा जा सकता है ...'
धन्यवाद। क्या आपको यह भी पता है कि क्या 'nullptr' लागू किया गया है, यह पता लगाने का कोई तरीका है कि __cplusplus के संस्करण पर निर्भर किए बिना (क्योंकि तकनीकी रूप से मैं C++ 0x का उपयोग कर रहा हूं, और nullptr वहां नहीं है) – nuzz
@nuzz: फिर आप नहीं हैं सी ++ 0x का उपयोग नहीं कर रहा हूँ। :) – Bill
ठीक है, मैं सी ++ 0x का एक हिस्सा उपयोग कर रहा हूं;) – nuzz