मुझे एहसास हुआ कि निम्नलिखित जीसीसी 4.7 में ठीक संकलित:क्या मैं एक shared_ptr को 0 असाइन कर सकता हूं? क्यूं कर?
#include <memory>
int main() {
std::shared_ptr<int> p;
p = 0;
}
हालांकि, वहाँ int
से या int*
से कोई असाइनमेंट ऑपरेटर है, और या तो int
या int*
या तो से कोई अंतर्निहित निर्माता है। int*
से एक कन्स्ट्रक्टर है, लेकिन वह स्पष्ट है। मैंने मानक पुस्तकालय कार्यान्वयन की जांच की और निर्माता वास्तव में स्पष्ट है, और कोई फिशी असाइनमेंट ऑपरेटर दृष्टि में नहीं हैं।
क्या कार्यक्रम वास्तव में अच्छी तरह से गठित है या जीसीसी मेरे साथ गड़बड़ कर रहा है?
'0' विशेष शाब्दिक है, यह 'nullptr_t' – Abyx
@LucDanton में परिवर्तित होता है क्योंकि g ++ बहुत स्मार्ट है, और' 42 - 42' से '0' में परिवर्तित होता है। क्लेंग, आईआईआरसी में वही बात होती है (आईईसीसी), जीएन2012 – Abyx
@ एबीएक्स में आपका उल्लेख किया गया था - एबीएक्स आप इस बिंदु को याद करते हैं - '0' में भाषा में शाब्दिक के रूप में कोई विशेष उपचार नहीं है। –