this question में, पूछताछकर्ता के पास निम्न कार्य है:विजुअल स्टूडियो 2008/2010 में टाइपनाम _not_ क्यों आवश्यक है?
template<typename ITER>
bool nextPermutation(ITER start, ITER end)
{
return nextPermutation(start, end, std::iterator_traits<ITER>::iterator_category());
}
typename
से पहले typename
की आवश्यकता क्यों नहीं है? मैंने सोचा था कि टेम्पलेट के नेस्टेड प्रकारों के लिए इसकी आवश्यकता थी, अगर टेम्पलेट टेम्पलेट पैरामीटर पर निर्भर है? जीसीसी मेरे विचार का समर्थन करता प्रतीत होता है, क्योंकि यह typename
और 4.5.1 दोनों के तहत संकलित नहीं करता है, जो typename
की मांग करता है। फिर भी, यह अभी भी विजुअल स्टूडियो 2008 और 2010 दोनों के तहत ठीक है। Xzx29 क्या यह सिर्फ एक और दृश्य स्टूडियो एक्सटेंशन/बग है जिसे मैं नहीं जानता?
या क्या यह वास्तव में यह संभव है कि iterator_category
या तो एक प्रकार या फ़ंक्शन है, क्योंकि उसके बाद कोष्ठक ()
की एक जोड़ी है? (@ डेडजीएम के संदेश starting here देखें।) तो क्या यह वास्तव में जीसीसी में एक बग है?
आपके द्वारा सूचीबद्ध (कन्स्ट्रक्टर और फ़ंक्शन) विकल्पों के अतिरिक्त, 'iterator_category' ऑपरेटर() को परिभाषित करने वाले प्रकार के एक स्थिर सदस्य चर हो सकता है। – Sjoerd
@Sjoerd: या एक फ़ंक्शन पॉइंटर। – sbi