मैं कैसे * सूचक प्रकार() का उपयोग मूल्य को प्रारंभ करते हैं एक प्रकार - वाक्य रचना की तरह?
आप नहीं कर सकते। वाक्यविन्यास T()
को 5.2.3/1,2 (सी ++ 03, सी ++ 11 एफडीआईएस में थोड़ा अलग शब्द) में परिभाषित किया गया है।
अभिव्यक्ति टी(), जहां टी एक गैर सरणी पूरा ऑब्जेक्ट प्रकार या (संभवतः सीवी-योग्य) शून्य के लिए एक सरल प्रकार-विनिर्देशक (7.1.5.2) है: विशेष दूसरा पैराग्राफ राज्यों में टाइप करें, निर्दिष्ट प्रकार का एक रैल्यू बनाता है, जो मान-प्रारंभिक (8.5) है;
इसका मतलब है कि int()
, प्रकार int और के एक rvalue पैदा करेगा यह मूल्य आरंभ कर। अब समस्या यह है कि int*
एक साधारण प्रकार का विनिर्देशक नहीं है, बल्कि एक विस्तृत प्रकार-विनिर्देशक है। व्याकरण में सरल प्रकार-विनिर्देशक की परिभाषा है:
simple-type-specifier:
::opt nested-name-specifieropt type-name
::opt nested-name-specifier template template-id
char
wchar_t
bool
short
int
long
signed
unsigned
float
double
void
साथ प्रकार- नाम
परिभाषित किया जा रहा है:
type-name:
class-name
enum-name
typedef-name
इस प्रस्तावित समाधान काम करता है क्या है। टाइपपीफ (या तो सीधे या टेम्पलेट के माध्यम से) का निर्माण एक प्रकार का नाम (तीसरा प्रकार) बनाता है जिसे सरल-प्रकार-विनिर्देशक (प्रथम प्रकार) के रूप में उपयोग किया जा सकता है।
स्रोत
2011-11-09 16:35:33
अच्छा सवाल। आपको 'हस्ताक्षरित int' के लिए भी एक समान विफलता मिलती है। –
अब सवाल यह है कि आप ऐसा क्यों करना चाहते हैं। आप सीधे 0 के साथ पॉइंटर्स प्रारंभ कर सकते हैं (यदि आपको पता है कि यह एक सूचक है), और यदि यह कुछ टेम्पलेट में छिपा हुआ है, तो 'टी()' ठीक काम करेगा ... मुझे नहीं पता कि यह प्रश्न 11 अपवॉट कैसे प्राप्त करता है:) –