इस बारे में उलझन में सी ++ 03 मानक, §14.7.1p5 से कथन है:अंतर्निहित टेम्पलेट इन्स्टेन्शियशन
अधिभार संकल्प प्रक्रिया एक वर्ग टेम्पलेट परिभाषा instantiating बिना कॉल करने के लिए सही समारोह निर्धारित कर सकते हैं, तो , यह निर्दिष्ट नहीं है कि वास्तव में यह तात्कालिकता होती है। [उदाहरण:
template <class T> struct S { operator int(); }; void f(int); void f(S<int>&); void f(S<float>); void g(S<int>& sr) { f(sr); // instantiation of S<int> allowed but not required // instantiation of S<float> allowed but not required };
- अंत उदाहरण]
मैं इस बात को समझने में असमर्थ हूँ। क्या यह अपरिभाषित व्यवहार है?
मुझे एक और similar problem मिला, जिसे मैं समझ में नहीं आता। वहां यह समझाया गया है कि सही व्यवहार अपरिभाषित है, लेकिन इसका क्या अर्थ है?
यहाँ: MSVC: Implicit Template Instantiation, though templated constructor not used
हालांकि [सी ++ परिभाषाएं] (http://stackoverflow.com/q/2047172/54262) सी से अधिक की मदद कर सकती है, क्योंकि जाहिर है कि उसके पास सी ++ मानक की एक प्रति है। –
मुझे अपरिभाषित/अनिर्दिष्ट/कार्यान्वयन-परिभाषित व्यवहार चेतावनियां पता हैं .. लेकिन मुझे इस कार्यक्रम के बारे में स्पष्टीकरण की आवश्यकता है .. –