2010-10-10 27 views
7
template<typename T> 
class A { 
    public: 
    A(T b) : a(b) { 
    } 
    private: 
    T a; 
}; 

A object(12); //Why does it give an error? 

टाइप टी को 12 तर्क से स्वचालित रूप से क्यों नहीं लिया जा सकता है?कक्षा टेम्पलेट में कोई कटौती

+1

यह एक डुप्ली है। –

+2

@ लिटब: लेकिन अगर कोई मूल नहीं ढूंढ पाता है, तो खोज इंजन को चेरी का दूसरा काटने का शायद एक अच्छा विचार है। –

उत्तर

4

Template argument deduction केवल फ़ंक्शन और सदस्य फ़ंक्शन टेम्पलेट्स पर लागू होता है लेकिन क्लास टेम्पलेट्स पर नहीं। तो आपका कोड खराब गठित है।

आपको टेम्पलेट तर्क को स्पष्ट रूप से प्रदान करने की आवश्यकता है।

A<int> object(12); //fine 
+0

कृपया ध्यान दें कि क्लास टेम्पलेट्स के लिए टेम्पलेट तर्क कटौती को C++ 17 में शामिल किया जाएगा: http://open-std.org/JTC1/SC22/WG21/docs/papers/2016/p0091r1.html – ThomasMcLeod

संबंधित मुद्दे