私は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が参照され、したがって、「」へのポインタ型を減衰し が、コンパイル時ではないだろう、私は次のエラーを取得しています。
error: no matching function for call to ‘fun(int [100])’
私が非参照を試みると、正常に動作します。私が理解しているように、配列はポインタ型に崩壊しています。
"effective modern C++"の項目1もこのように示唆しています。 '(&param)[N]'を書くことは、 'f'の本体で' N'を参照する必要がない限り、冗長です(これは型を取っても推測することができます) –