यह मानक के पाठ और टिप्पणियों में नोट किए गए कई प्रमुख कार्यान्वयनों द्वारा दोनों को अस्वीकृत कर दिया गया है, लेकिन पूरी तरह से असंबंधित कारणों के लिए।
सबसे पहले, "पुस्तक द्वारा" कारण: की तात्कालिकता का बिंदु A<C>, मानक के अनुसार, परिभाषा के तुरंत पहलेB , और std::is_default_constructible<C>तात्कालिकता का बिंदु इसके तुरंत पहले है:
एक वर्ग टेम्पलेट विशेषज्ञता के लिए, [...] यदि विशेषज्ञता का तात्कालिक रूप से तात्कालिक उपयोग किया जाता है, क्योंकि इसे किसी अन्य टेम्पलेट विशेषज्ञता के भीतर से संदर्भित किया जाता है, यदि संदर्भ जिस संदर्भ से निर्दिष्ट किया जाता है, वह टेम्पलेट पैरामीटर पर निर्भर करता है, और यदि विशेषज्ञता पहले से त्वरित नहीं है। एन्क्लोजिंग टेम्पलेट के तात्कालिकता के लिए, तात्कालिकता का बिंदु संलग्नक टेम्पलेट के तात्कालिकता के बिंदु से पहले है। अन्यथा, इस तरह के एक विशेषज्ञता के लिए तात्कालिकता तुरंत नामस्थान गुंजाइश घोषणा या परिभाषा है कि विशेषज्ञता के लिए संदर्भित करता है।
चूँकि Cउस बिंदु पर स्पष्ट रूप से अपूर्णता है, तात्कालिकता std::is_default_constructible<C>का व्यवहार अपरिभाषित है। हालाँकि, कोर मुद्दा 287 देखें , जो इस नियम को बदल देगा।
वास्तव में, यह एनएसडीएमआई के साथ करना है।
- NSDMI अजीब हैं क्योंकि उन्हें पार्स करने में देरी हो जाती है - या मानक समानता में वे "पूर्ण-श्रेणी का संदर्भ" हैं।
- इस प्रकार, यह
= 0सिद्धांत रूप में Bअभी तक घोषित नहीं की गई चीजों का संदर्भ दे सकता है , इसलिए कार्यान्वयन वास्तव में इसे पार्स करने की कोशिश नहीं कर सकता है जब तक कि यह समाप्त नहीं हुआ है B।
- एक वर्ग को पूरा करने के लिए विशेष सदस्य कार्यों के निहित घोषणा की आवश्यकता होती है, विशेष रूप से डिफ़ॉल्ट निर्माता में, क्योंकि
Cएक निर्माता घोषित नहीं होता है।
- उस घोषणा के कुछ हिस्सों (कॉन्स्ट्रेप-नेस, नोएक्ससेप्ट-नेस) एनएसडीएमआई के गुणों पर निर्भर करते हैं।
- इस प्रकार, यदि कंपाइलर NSDMI को पार्स नहीं कर सकता है, तो यह क्लास को पूरा नहीं कर सकता है।
- नतीजतन, उस बिंदु पर जब यह तात्कालिकता करता है
A<C>, यह सोचता है कि Cअधूरा है।
विलंबित पार्स क्षेत्रों से निपटने वाला यह पूरा क्षेत्र कार्यान्वयन अधिमिश्रण के साथ, बहुत ही कम है। इसे साफ होने में कुछ समय लग सकता है।