return {};
इसका मतलब है कि रिटर्न वैल्यू{}
का इनिशियलाइज़र है । रिटर्न वैल्यू लिस्ट-इनिशियलाइज्ड विद अ खाली लिस्ट है।
यहाँ C ++ मानक में [stmt.return] के आधार पर वापसी मूल्य पर कुछ पृष्ठभूमि दी गई है :
किसी फ़ंक्शन के लिए जो मान से लौटता है (यानी रिटर्न प्रकार एक संदर्भ नहीं है और नहीं है void
), एक अस्थायी ऑब्जेक्ट है जिसे रिटर्न वैल्यू कहा जाता है । यह ऑब्जेक्ट return
स्टेटमेंट द्वारा बनाया गया है , और इसके शुरुआती लोग इस पर निर्भर करते हैं कि रिटर्न स्टेटमेंट में क्या था।
रिटर्न मान उस फ़ंक्शन में पूर्ण-अभिव्यक्ति के अंत तक जीवित रहता है जिसे फ़ंक्शन कहा जाता है; यदि इसका वर्ग प्रकार होता है, तो इसका विध्वंसक भाग तब तक चलेगा जब तक कि इसे आजीवन विस्तारित नहीं किया जाता है, जब यह सीधे किसी संदर्भ को बाध्य करता है।
वापसी मूल्य को दो अलग-अलग तरीकों से शुरू किया जा सकता है:
मान लें T
कि फ़ंक्शन का रिटर्न प्रकार है, तो ध्यान दें कि return T{};
अलग है return {}
: पूर्व में, एक अस्थायी T{}
बनाया गया है, और उसके बाद रिटर्न मान उस अस्थायी से प्रतिलिपि-प्रारंभ किया गया है।
यह संकलित करने में विफल होगा यदि T
कोई सुलभ प्रतिलिपि / चाल-निर्माणकर्ता नहीं है, लेकिन return {};
उन निर्माणकर्ताओं के मौजूद न होने पर भी सफल होगा। तदनुसार, return T{};
कॉपी-कंस्ट्रक्टर आदि के साइड-इफेक्ट दिखा सकते हैं, हालांकि यह एक कॉपी एलिसेंस संदर्भ है इसलिए ऐसा नहीं हो सकता है।
यहाँ C ++ 14 (N4140 [dcl.init.list] / 3) में सूची-आरंभीकरण का संक्षिप्त विवरण दिया गया है, जहाँ इनिशियलाइज़र एक खाली सूची है:
- यदि
T
एक समुच्चय है, तो प्रत्येक सदस्य को इसके ब्रेस-या-इक्वलाइज़र से इनिशियलाइज़ किया जाता है यदि यह एक था, अन्यथा जैसे कि {}
(इसलिए इन चरणों को पुनरावर्ती रूप से लागू करें)।
- यदि
T
उपयोगकर्ता-प्रदान किए गए डिफ़ॉल्ट निर्माता के साथ एक वर्ग प्रकार है, तो उस निर्माता को कहा जाता है।
- यदि
T
एक वर्ग प्रकार एक अंतर्निहित परिभाषित या = default
एड डिफॉल्ट कंस्ट्रक्टर के साथ होता है, तो ऑब्जेक्ट को शून्य-आरंभीकृत किया जाता है और फिर डिफॉल्ट कंस्ट्रक्टर को कहा जाता है।
- यदि
T
कोई है std::initializer_list
, तो रिटर्न वैल्यू एक खाली सूची है।
- अन्यथा (यानी
T
एक गैर-श्रेणी प्रकार है - रिटर्न प्रकार को एरेज़ नहीं किया जा सकता है), रिटर्न मान शून्य-प्रारंभिक है।