C++初めて2週間くらいなのですがネットで見つけた
下のテンプレート関数の挙動がわからない。
ここから-----------------------
配列の要素数を返すテンプレート。

template<class T,size_t N>
size_t count(T (&array)[N])
{
return N;
}

使用例:

int array[10];
cout << count(array) << endl;
ここまで------------------------

■今わかっていること
・size_tはtypedefされたunsigned intのこと
・要素数の戻り値はsize_t型
・たぶん(&array)[N]のarrayに配列アドレスが参照渡しされてる。
■わからないこと
・<class T,size_t N>のTって使われてない?のに関数が成功してるのはなぜか?
・size_t NのNは引数として渡してないのになぜ要素数が入っているのか?
・int array[10];のarrayは配列の先頭アドレスとすると、
(&array)[N]に引数として参照渡しされたときイメージとして
(&配列アドレス)[N]となると、配列アドレスのアドレス??ってなんだろう?
という感じでよく分からない。
・count(T (&array)[N])のTってなんの役に立つの?何するものなんでしょうか?
・このテンプレート関数の一連の流れが知りたい