मुझे कोई तार्किक कारण नहीं दिख रहा है। मेरा मतलब है आप आसानी से एक संरचना इस तरह एक सरणी सदस्य युक्त का उपयोग करके आवश्यकता को दूर कर सकते:आईएसओ सी ++ क्यों लौटने वाले सरणी मना करता है?
template <size_t n>
struct arr { int d[n]; };
auto fnReturningArray()
{
return arr<3>{0, 1, 2};
};
के रूप में यदि सरणी सीधे छोटा सा फर्क के साथ वापस आ गया है कि आप पहले का उपयोग करना चाहिए कौन सा ठीक उसी तरह से व्यवहार करेंगे इसका उपयोग करने के लिए संरचना सदस्य 'डी'। इसके अलावा मानक ने 'std :: array' प्रकार से समान कार्यक्षमता को जोड़ा है। तो ऐसा लगता है कि यह कार्यान्वयन संभव है। फिर आईएसओ सी ++ ने इस कार्रवाई को क्यों मना कर दिया है? हो सकता है कि विरासत कोड संगतता (लेकिन मुझे शायद ही यह विश्वास हो कि यह अन्य नई चीजों के साथ ही मामला लंबा हो गया है, उदाहरण के लिए 'ऑटो' कीवर्ड का नया अर्थ)।
क्योंकि सरणी की प्रतिलिपि नहीं बनाई जा सकती है। – Columbo
Arrays कॉपी करने योग्य या असाइन करने योग्य नहीं हैं, इसलिए आप उन्हें वापस नहीं कर सकते हैं या उन्हें मूल्य से पास नहीं कर सकते हैं। यह क्यों है, ठीक है, यह एक अच्छा सवाल होगा। – juanchopanza
@ कोल्लमबो लेकिन जब वे संरचना में जादुई रूप से प्रतिलिपि बन गए। – AnArrayOfFunctions