निम्नलिखित प्रकारों पर विचार करें
टेम्पलेट & lt; typename T1, typename T2, typename T3 & gt; Struct either_or {/ * यहां मुझे ऐसी त्रुटि प्रकार की आवश्यकता है जो कहते हैं "माफ करना, टी 1 स्वीकार्य प्रकार नहीं है।" * / Typdef त्रुटि & lt; T1 & gt; प्रकार; }; टेम्पलेट & lt; typename T1, typename T3 & gt; संरचना either_or & lt; T1, T1, T3 & gt; {टाइपपेडफ़ टी 1 प्रकार; // टी 1 ठीक है}; टेम्पलेट & lt; typename T1, typename टी 2 & gt; संरचना either_or & lt; T1, T2, T1 & gt; {टाइपपेडफ़ टी 1 प्रकार; // टी 1 ठीक है}; / * यहां एक ऐसा कार्य है जो त्रुटि प्रकार चर * / टेम्पलेट & lt; typename T & gt; शून्य foo (typename either_or & lt; टी, चार, अहस्ताक्षरित चार & gt; :: प्रकार x) {/ * प्रिंट char या अहस्ताक्षरित कक्ष को छोड़कर कि टी मुद्रण योग्य नहीं है * /} क्या कोई त्रुटि है इस मामले में उपयोग करने के लिए C ++ की प्रकार प्रणाली टाइप करें? यदि नहीं है, तो क्या मुझे इसका एहसास हो सकता है या कैसे?
नहीं, ऐसा कोई प्रकार उपलब्ध नहीं है भाषा या मानक पुस्तकालय द्वारा यदि आप चाहें तो अपना खुद का स्वागत करने के लिए आपका स्वागत है:
टेम्पलेट & lt; typename T & gt; संरचना त्रुटि {}; एक और विकल्प यह है कि आधार टेम्पलेट से छोड़े गए प्रकार परिभाषा। जब T1 , T2 और T3 के मान दो विशेषज्ञताओं से मेल नहीं खाते हैं, तो आपको आधार टेम्पलेट मिलेगा, जिसके पास कोई प्रकार सदस्य नहीं होगा। इससे कंपाइलर को foo के उस संस्करण पर विचार नहीं करने का कारण होगा, और जब आप एक अमान्य तर्क प्रकार के साथ कॉल करने का प्रयास करेंगे तो आपको अंततः संकलन त्रुटि मिल जाएगी। < / html>
Comments
Post a Comment