स्थैतिक प्रारंभिकता में प्रयुक्त लैम्ब्डा अभिव्यक्ति का व्यवहार जादुई रूप से लैम्ब्डा बॉडी के अंदर आरंभ किए गए स्थानीय चर पर निर्भर करता है
< कोड> पूर्णांक static_1 = [=] () - & gt; Int {int k_ = 7; // यदि यह कथन प्रस्तुत करता है, लैम्ब्डा काम नहीं करता है (static_1 अनिर्णीकृत रहता है) रिटर्न 5; } (); Int static_2 = [=] () - & gt; Int {// ठीक चर initializer बिना int k_ = 7; वापसी 5; } (); Int main () {int local = [=] () - & gt; Int {int k_ = 7; // ठीक चर के साथ initializer जब लैम्ब्डा स्थानीय समारोह संदर्भ 5 रिटर्न में इस्तेमाल किया; } (); Printf ("\ n static_1 =% d \ n static_2 =% d \ n स्थानीय =% d", static_1, static_2, स्थानीय); }
मैं अंतिम मसौदे में कुछ भी नहीं देख सकता जो इससे उम्मीद की ओर जाता है व्यवहार (विशेष रूप से चूंकि यह चुपचाप होता है)।
मैंने इस समस्या को वीएस 10 में पुन: प्रस्तुत किया है और जीसीसी 4.5.0 में व्यवहार की उम्मीद है जैसा आप चाहते हैं (सभी चर आरंभ किए जाते हैं), इसलिए मैं कहता हूँ हाँ, यह VS10 में एक बग, क्या आपने एक बग खोला है?
अपडेट: मैंने सबमिट और जवाब दिया है:
धन्यवाद आप इस मुद्दे को सबमिट करने के लिए यह हमारे लैम्ब्डा कार्यान्वयन में एक बग था और इसे ठीक किया गया है। यह ठीक दृश्य स्टूडियो (और संभवतः दृश्य स्टूडियो 2010 SP1 के अगले रिलीज में उपलब्ध होना चाहिए, हालांकि मैं इसकी गारंटी नहीं दे सकता)।
Comments
Post a Comment