Sono confuso dal modello di istanza di C++. Ho un pezzo di codice:Istanza di modelli in C++
template <class T, int arraySize>
void test1(T (&array)[arraySize])
{
cout << typeid(T).name() << endl;
}
template<class T>
void test2(T &array)
{
cout << typeid(T).name() << endl;
}
int main()
{
int abc[5];
test1(abc);
test2(abc);
return 0;
}
Ecco le mie domande:
1. In che modo la dimensione della matrice abc viene passato al TEST1 (il parametro arraysize)?
2. In che modo il compilatore C++ determina il tipo di T nei due modelli?
Vuoi dire qualcosa del tipo 'test1 (abc)'? Il secondo non ha alcun senso. Hai una funzione 'test2 ' e la stai indicizzando come se fosse un array ?! –
Shahbaz