Saturday 15 September 2012

c++ - SFINAE on default parameter value -


निम्नलिखित कोड पर विचार करें।

  टेम्पलेट & lt; typename मेटाडेटा & gt; संरचना एस {डबल डेटा; मेटाडेटा मेटाडेटा; स्पष्ट एस (डबल डी = 0. मेटाडेटा const & amp; एम = मेटाडेटा ()): डेटा (डी), मेटाडेटा (मी) {}}; Struct NoDefaultConstructor {NoDefaultConstructor (int) {}}; निधि PrivateDefaultConstructor {PrivateDefaultConstructor (int) {} निजी: PrivateDefaultConstructor () {}};   

समस्या के बिना निम्न संकलित:

  S & lt; float & gt; एस एफ;   

के रूप में अपेक्षित, निम्न कोड नमूने संकलित करने में विफल:

  एस & lt; NoDefaultConstructor & gt; sndc; एस & LT; NoDefaultConstructor & gt; sndc (1); एस & LT; PrivateDefaultConstructor & gt; एसपीडीसी; एस & LT; PrivateDefaultConstructor & gt; एसपीडीसी (1);   

लेकिन निम्न के बारे में:

  एस & lt; NoDefaultConstructor & gt; एसडीडीसी (1, 1); एस & LT; PrivateDefaultConstructor & gt; एसपीडीसी (1, 1);   

यह जीसीसी 4.4.1 के साथ ठीक है, लेकिन इसके बारे में कहने के लिए मानक क्या है? एस के साथ NoDefaultConstructor या PrivateDefaultConstructor

के टेम्पलेट तत्काल पर एक त्रुटि की अपेक्षा करनी चाहिए I डिफ़ॉल्ट पैरामीटर मान?

धन्यवाद।

इसे ठीक करना चाहिए क्योंकि कोई नहीं दूसरे पैरामीटर को स्पष्ट रूप से निर्दिष्ट करते समय डिफ़ॉल्ट कन्स्ट्रक्टर को प्रारंभ करने की आवश्यकता होती है (केवल इंट और कॉपी कन्स्ट्रक्टर से रूपांतरण कन्स्ट्रक्टर लागू होते हैं)।

नोट: यह एसएफआईएनएई से संबंधित नहीं है

No comments:

Post a Comment