2011-05-28 9 views
13

@FredOverflow mentioned in the C++ chatroom कि this ऐसे नामों का एक दुर्लभ मामला है जिनके नाम हैं। C++ 0x एफ डी आई का उल्लेख है 5.1.1 [expr.prim.general] p4 के तहत:किस रावल के नाम हैं?

अन्यथा, एक सदस्य declarator एक दसवीं कक्षा की एक गैर स्थिर डेटा सदस्य (9.2) वाणी यदि, अभिव्यक्ति this के प्रकार के "सूचक एक prvalue है एक्स " वैकल्पिक ब्रेस-या-बराबर-प्रारंभकर्ता के भीतर। यह सदस्य-घोषणाकर्ता में कहीं और नहीं दिखाई देगा। (जोर मेरा)

अन्य कोई क्या हैं, यदि कोई है?

+4

तकनीकी रूप से, 'यह', 'सत्य', और 'झूठा' नाम नहीं हैं। वे टोकन हैं जो वैध रावल्यू अभिव्यक्तियां बनाते हैं और जो पहचानकर्ताओं की तरह दिखते हैं। – aschepler

उत्तर

8

एक प्रमुख मामले प्रगणक

हैं

अभिव्यक्ति one और two रैल्यू हैं (अधिक विशेष रूप से, सी ++ 0x में मूल्य)। एक और टेम्पलेट गैर प्रकार पैरामीटर

template<int *P> struct A { }; 

अभिव्यक्ति P एक rvalue भी (अधिक विशेष रूप से फिर से, C++ 0x में एक prvalue) है।

+0

इसे वापस करने के लिए मानक उद्धरण? (मुझे पता है कि आपके पास एक है, इसे मुझसे छिपाएं नहीं! ':) ') – Xeo

+0

@Xeo यह 5.1.1p8 और 14.1p6 पर है –

8
  1. बूलियन शाब्दिक true और false प्रकार bool की prvalues ​​हैं।
  2. nullptrnullptr_t प्रकार का एक प्रसार है।
  3. जब आप किसी फ़ंक्शन से नामित चर लौटाते हैं, तो यह उस अभिव्यक्ति के संदर्भ में xvalue बन जाता है, और xvaluervalue (प्रति §3.10/1) है।

वहाँ अधिक हो सकता है, लेकिन उन सभी मैं इस समय के बारे में सोच सकते हैं (और तीसरे संदिग्ध है - यह वास्तव में अभिव्यक्ति XValue है कि है, लेकिन (return x; की तरह कुछ जहां x एक स्थानीय चर रहा है साथ और आप मान वापस कर रहे हैं, एक संदर्भ नहीं), परिवर्तनीय का नाम अभिव्यक्ति है। नाम वास्तव में एक glvalue को संदर्भित करता है, और अभिव्यक्ति में मूल्य (लेकिन वास्तव में नाम नहीं) एक xvalue में परिवर्तित हो जाता है (जो एक rvalue है)।

+1

डी ओह! निश्चित रूप से 'सत्य' और 'झूठा'! – Xeo

+0

तीसरा बिंदु केवल मूल्य द्वारा लौटाए गए स्थानीय चर पर लागू होता है। और फिर भी अभिव्यक्ति अभी भी एक अंतराल है, लेकिन एक विशेष भाषा नियम है जो वस्तु * के साथ व्यवहार करता है जैसे कि * इसे एक रावल द्वारा नामित किया गया था। – fredoverflow

+0

@FredOverflow: हाँ - मैंने इसे लागू करने के लिए स्थानीय होने के उल्लेख में संपादित किया है (और जैसा कि मैंने कहा, मैं मानता हूं कि तीसरा वैसे भी संदिग्ध है)। –

संबंधित मुद्दे

 संबंधित मुद्दे