void fun (char (&a)[2]) // 1D reference
{}
template<typename T, int SIZE>
void funT (T (&a)[SIZE]) // 1D reference
{}
int main()
{
char c[2][2]; // 2D array
fun(c); // error
funT(c); // ok !!!??
}
मैं उम्मीद कर सकते हैं कि fun()
त्रुटि देता है करता है जब -1 डी संदर्भ के साथ 2 डी सरणी प्राप्त करता है, लेकिन कैसे funT()
आ ठीक काम करता है! क्या इस तरह के व्यवहार के लिए मानक में कोई संदर्भ है या क्या यह C++ भाषा में है?क्यों एक टेम्पलेट समारोह एक सामान्य कार्य नहीं
समारोह टेम्पलेट में, मुद्रण 'अदालत << sizeof (टी) की कोशिश << endl; '.. यह' 2' प्रिंट करेगा ... जो दिखाता है कि 'टी'' char' नहीं है, बल्कि कुछ और है। इसका 'char [2] '। – Nawaz
यह ध्यान रखना महत्वपूर्ण है कि 'char c [2] [2] '2 आयामी सरणी नहीं है, बल्कि एक आयामी सरणी की एक आयामी सरणी है। तर्क की यह पंक्ति समस्या को सरल समझती है। 'सी' एक 1 डी सरणी है, सिर्फ' char' –