我正在學習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)T的樂趣(T & X)
這裏x是一個參考,因此將不腐朽 'A' 到指針類型,但 在編譯時,我得到下面的錯誤。
error: no matching function for call to ‘fun(int [100])’
當我嘗試非參考,它工作正常。據我所知,這個數組被腐蝕成指針類型。
「有效的現代C++」中的第1項也提供了這種方式。編寫'(&param)[N]'是多餘的,除非你需要在'f'的主體中引用'N'(即使這個類型也可以推導出來) – 2014-12-24 08:26:26