2015-02-22 6 views
6
typedef std::function<bool(int)> MyFunction; 

bool(int) टेम्पलेट तर्क नोटेशन वाक्यविन्यास - क्या इसका नाम है? मैंने इस वाक्यविन्यास के बारे में सी ++ मानक पढ़ने की कोशिश की और पता नहीं था कि क्या खोजना है।इस वाक्यविन्यास के लिए (खोजने योग्य) नाम क्या है ...?

जाहिर है, अन्य संदर्भों में इसका उपयोग करने में असफल लगता है।

typedef bool(int) MyFunctionType; // does not work. 

तो मुझे लगता है इस वाक्य कहीं के बारे में एक विशेष अध्याय ...

धन्यवाद है।

+0

भले ही यह व्याकरण का संदर्भ नहीं देता है, फिर भी मैं "फ़ंक्शन प्रकार" शब्द को 'बूल (int)' से जोड़ता हूं। – dyp

उत्तर

9

मुझे इसके लिए एक आम नाम पता नहीं है। मानक में, इसे व्याकरण उत्पादन के बाद टाइप-आईडी कहा जाता है।

प्रकार आईडीbool(int) नाम टाइप करें "(int) के समारोह लौटने bool"।

यह typedef के साथ काम नहीं करता है (जो सामान्य घोषणा वाक्य रचना के बजाय का उपयोग करता है), लेकिन उर्फ ​​using साथ घोषित एक प्रकार आईडी का उपयोग करता है:

using MyFunctionType = bool(int); 
+0

लेकिन ... के लिए सी ++ में एकमात्र परिभाषा औपचारिक व्याकरण में है। और औपचारिक व्याकरण में '(' और ')' शामिल कोई उत्पादन नहीं है। अब मैं उलझन में हूँ। छिपी व्याकरण सुविधा या रविवार-अंधापन? – BitTickler

+0

आह मैंने पाया - 'पैरामीटर-और-क्वालिफायर' उत्पादन है। – BitTickler

+0

यह 'typedef' के साथ काम करता है:' typedef bool MyFunctionType (int); ' – 0x499602D2

2

N4140 कॉल bool(int) एक समारोह प्रकार [dcl.fct] में। के रूप में अन्य जवाब में कहा गया है, यह एक प्रकार आईडी है:

[dcl.name]/1 प्रकार रूपांतरण स्पष्ट रूप से निर्दिष्ट करने के लिए, और sizeof, alignof, new, या typeid के तर्क के रूप में, प्रकार का नाम निर्दिष्ट किया जाएगा। यह टाइप-आईडी के साथ किया जा सकता है, जो है जो कि के चर या फ़ंक्शन के लिए वाक्यशैली की घोषणा है जो इकाई के नाम को छोड़ देता है।

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