array_lengthof
is a template function. This function is generated at compile time for all combination of array type and size (you pass to this function in your code) during compile time.
So if you call this function for int a[10]; Function call would be converted implicitly by compiler to
array_lengthof<int, 10>(a).
Parameter T (¶m)[N] means param is a reference to an int array of size N. (N being a compile time constant)