template<typename T>
class A {
public:
A(T b) : a(b) {
}
private:
T a;
};
A object(12); //Why does it give an error?
टाइप टी को 12
तर्क से स्वचालित रूप से क्यों नहीं लिया जा सकता है?कक्षा टेम्पलेट में कोई कटौती
template<typename T>
class A {
public:
A(T b) : a(b) {
}
private:
T a;
};
A object(12); //Why does it give an error?
टाइप टी को 12
तर्क से स्वचालित रूप से क्यों नहीं लिया जा सकता है?कक्षा टेम्पलेट में कोई कटौती
Template argument deduction केवल फ़ंक्शन और सदस्य फ़ंक्शन टेम्पलेट्स पर लागू होता है लेकिन क्लास टेम्पलेट्स पर नहीं। तो आपका कोड खराब गठित है।
आपको टेम्पलेट तर्क को स्पष्ट रूप से प्रदान करने की आवश्यकता है।
A<int> object(12); //fine
कृपया ध्यान दें कि क्लास टेम्पलेट्स के लिए टेम्पलेट तर्क कटौती को C++ 17 में शामिल किया जाएगा: http://open-std.org/JTC1/SC22/WG21/docs/papers/2016/p0091r1.html – ThomasMcLeod
यह एक डुप्ली है। –
@ लिटब: लेकिन अगर कोई मूल नहीं ढूंढ पाता है, तो खोज इंजन को चेरी का दूसरा काटने का शायद एक अच्छा विचार है। –