के साथ फ़ंक्शन टेम्पलेट में सरणी कैसे पास करें I C++ टेम्पलेट अवधारणाओं को सीख रहा हूं। मैं निम्नलिखित समझ में नहीं आता।संदर्भ
#include <iostream>
#include <typeinfo>
using namespace std;
template <typename T>
T fun(T& x)
{
cout <<" X is "<<x;
cout <<"Type id is "<<typeid(x).name()<<endl;
}
int main (int argc, char ** argv)
{
int a[100];
fun (a);
}
मैं क्या कोशिश कर रहा हूं?
1) टी मज़ा (टी & एक्स)
यहाँ एक्स एक संदर्भ है, और इसलिए 'एक' सूचक प्रकार, में लेकिन जब संकलन, मैं निम्न त्रुटि हो रही है सड़ा हुआ नहीं होंगे।
error: no matching function for call to ‘fun(int [100])’
जब मैं गैर संदर्भ का प्रयास करता हूं, तो यह ठीक काम करता है। जैसा कि मैं समझता हूं कि सरणी सूचक प्रकार में क्षीण हो जाती है।
"प्रभावी आधुनिक सी ++" में आइटम 1 इस तरह से सुझाव देता है। लेखन '(और param) [N] 'अनावश्यक है जब तक आपको' f' के शरीर में 'N' को संदर्भित करने की आवश्यकता न हो (भले ही आपके पास टाइप होने के बाद भी इसे घटाया जा सके) –