Esta pregunta viene de éste:matriz no se descompone a puntero de ser aprobada por referencia constante en una función de plantilla
c++ pass array to function question
pero desde el OP aceptó una respuesta supongo que nadie lo va a leer ahora.
Probé este código en g ++. Parece que la matriz no se descompone a un puntero cuando se pasa a esta función (la función devuelve el resultado correcto):
#include <iostream>
template <typename T>
std::size_t size_of_array (T const & array)
{
return sizeof (array)/sizeof (*array);
}
int main()
{
int a [5];
std::cout << size_of_array (a) << '\n';
}
Otro usuario (sharptooth) dijo que tiene el mismo comportamiento en VC++ 10 con inlining fuera.
¿Alguien puede explicarlo? Gracias.
Mi conjetura salvaje es que 'T' se parece al tipo' int [5] ', por lo que no hay necesidad de un decaimiento a un puntero. Pero no soy un experto – Constantinius