#include <iostream>
using namespace std;
template <typename T, unsigned int S>
unsigned int array_size(const T (&)[S])
{
return S;
}
int main()
{
char a[] = "Hello, world!";
unsigned int s = array_size(a);
cout << s << endl;
return 0;
}
The output of the program is 14.
T(&)[S] is the type of the passed in parameter, i.e. T (&in)[S], where "in" is the reference of the array "a[14]" in our case. When doing the type deduction, the compiler will match T with char and S with 14.
No comments:
Post a Comment