मैं इस कोड है: यदि मैं एक ही टेम्पलेट 'हस्ताक्षर' के साथ एक टेम्पलेट समारोह के रूप में foo()
बनानेडिफ़ॉल्ट टेम्पलेट पैरामीटर: संकलक टेम्पलेट तर्क निर्दिष्ट नहीं करने के बारे में शिकायत क्यों करता है?
struct A{};
template<class T = A>
struct B {
void foo() {}
};
B b; //Error: missing template arguments before 'b'
//Error: expected ';' before 'b'
//More errors
b.foo()
, संकलक टेम्पलेट तर्क को निर्दिष्ट नहीं के बारे में शिकायत नहीं करता है:
struct A {};
struct B {
template<class T = A>
void foo() {}
};
B b; //OK
b.foo()
तो मुझे एक डिफ़ॉल्ट पैरामीटर के साथ टेम्पलेट क्लास के लिए तर्क निर्दिष्ट करने की आवश्यकता क्यों है, लेकिन टेम्पलेट फ़ंक्शन के लिए नहीं? क्या मुझे कुछ सूक्ष्मता है जो मुझे याद आ रही है?
कारण निश्चित रूप से टेम्पलेट तर्क कटौती विफलता के कारण है। लेकिन मैं जानना चाहता हूं क्यों।
क्या इस प्रश्न के शीर्षक से कोई शब्द गायब है? – Pointy
हां। शब्द याद किया - शिकायत। इसे जोड़ा गया – badmaash
* संभावित टेम्पलेट्स के लिए डिफ़ॉल्ट टेम्पलेट तर्क [http://stackoverflow.com/questions/2447458/default-template-arguments-for- कार्यक्षमता- टेम्पलेट्स) * के संभावित डुप्लिकेट। –