दिलचस्प पोस्ट
मैं सी में const / literal तार को कैसे जोड़ूं? जांच करें कि क्या कोई रजिस्टर सीएमपी रेग के साथ शून्य है, 0 बनाम या रेग, रेग? अनुवादित 3 डी के माध्यम से वेबकिट-आधारित धुँधली / विकृत पाठ पोस्ट एनीमेशन मैं एक आंतरिक वर्ग की घोषणा कैसे करूं? एक वेब कर्मचारी को ऑब्जेक्ट पास करना पिक्सेसो लाइब्रेरी के साथ ListView का उपयोग करना OAuth 2 में अंतर्निहित अनुदान प्राधिकरण प्रकार का उद्देश्य क्या है? एक एमवीसी परियोजना के दृश्य फ़ोल्डर में वेब। कॉन्फ़िफ़ फ़ाइल क्या करती है कैसे एक फाइल में NSLog GetText का उपयोग करके क्लिपबोर्ड से पाठ प्राप्त करें – रिक्त क्लिपबोर्ड पर त्रुटि से बचें एससीएसएस के संकलन करते समय झूठी सकारात्मक "अपरिभाषित चर" त्रुटि जावास्क्रिप्ट में सीएसएस प्रॉपर्टी सेट करें? जावास्क्रिप्ट की तारीख रेगेक्स डीडी / एमएम / वाई वाई वाई वाई MASM32 में भ्रामक ब्रैकेट अप्रत्याशित रूप से समाप्त होने वाले यूआरएल के लिए अनुरोध फ़ॉर्मेट अपरिचित है

एक VS2010 बग? बिना चेतावनी के बाध्यकारी गैर-कॉन्फ्रेंस संदर्भ को रैवल्यू के लिए अनुमति दे रहा है?

string foo() { return "hello"; } int main() { //below should be illegal for binding a non-const (lvalue) reference to a rvalue string& tem = foo(); //below should be the correct one as only const reference can be bind to rvalue(most important const) const string& constTem = foo(); } 
  1. जीसीसी एक संकलन त्रुटि देने के लिए अच्छा है: प्रकार के गैर-संविधान संदर्भ के अवैध प्रारंभ: std::string& एक अस्थायी प्रकार std::string
  2. VS2008 बहुत कम नहीं है क्योंकि कम से कम यह एक संकलित चेतावनी देता है: चेतावनी C4239: गैर-मानक विस्तार का उपयोग किया गया है: 'आरंभ': std::string से std::string & एक गैर-कॉन्फ़िगर संदर्भ से रूपांतरण केवल एक लावल्यू के लिए बाध्य किया जा सकता है
  3. यहाँ समस्याग्रस्त एक आता है – VS2010 (एसपी 1) किसी भी त्रुटि या चेतावनी के बिना ठीक comples, क्यों ?? !! मुझे पता है कि वीएस -2010 में रैवल्यू रेफर्यूलेशन का इस्तेमाल रेंवेल के साथ बाँध करने के लिए किया जा सकता है, लेकिन मैं डेमो कोड में बजाय && इस्तेमाल नहीं कर रहा हूँ, मैं सिर्फ गैर-कॉन्स्ट लैवल्यू संदर्भ का उपयोग कर रहा था!

क्या मुझे VS2010 के व्यवहार को यहाँ समझा सकता है? क्या यह एक बग है? धन्यवाद

Solutions Collecting From Web of "एक VS2010 बग? बिना चेतावनी के बाध्यकारी गैर-कॉन्फ्रेंस संदर्भ को रैवल्यू के लिए अनुमति दे रहा है?"

यह वी.एस. कम्पाइलर का एक ज्ञात मुद्दा / सुविधा है उन्होंने हमेशा यह अनुमति दी है और ऐसा नहीं लगता है कि उस एक्सटेंशन को निकालने में कोई फर्क नहीं पड़ता।

कंपाइलर भाषा एक्सटेंशन को अक्षम कर दिया गया है, और / W4 पर एक चेतावनी के साथ एक त्रुटि जारी करेगा। हालांकि, इस कोड को हटाने से पहले कोड संकलन टूट जाएगा, और माइक्रोसॉफ्ट यह करने के लिए बहुत अनिच्छुक है। यही कारण है कि वे अपने SFINAE समर्थन को ठीक नहीं करेंगे।

इस समस्या का एक बहुत ही स्वाभाविक रूप है:

 class Foo { int _val; public: Foo(int v) : _val(v) {} void F() { std::cout << _val << std::endl; } }; class Bar { Foo& f; public: Bar(Foo& f) : f(f) {} void F() { fF(); } }; int main() { Bar b(Foo(3)); bF(); } 

इसलिए: bF() को कॉल के दौरान bf बिंदु क्या है? उपरोक्त उदाहरण, VS2013 डिफ़ॉल्ट डीबग सेटिंग के साथ संकलित, दुर्घटनाग्रस्त होने और 3 प्रिंट करने के बिना चलाता है, लेकिन मुझे संदेह था कि किसी भी अधिक जटिल उदाहरण से भ्रष्टाचार को ढेर लग जाएगा। यदि ऐसा नहीं है और कंपाइलर यह काम करने के लिए कुछ 'चतुर' कर रहा है, तो मुझे लगता है कि यह वास्तव में क्या कर रहा है यह है:

 class Foo { int _val; public: Foo(int v) : _val(v) {} void F() { std::cout << _val << std::endl; } }; class Bar { Foo f; public: Bar(Foo&& f) : f(f) {} void F() { fF(); } }; int main() { Bar b(Foo(3)); bF(); }