template<typename T, int N>
char(&f_num_els(T(&)[N]))[N];
#define F_NUM_ELS(x) int(sizeof(f_num_els(x)));
下面进行测试函数:
// test1
int a[5];
cout << F_NUM_ELS(a);
cout << endl;
// test2
int b[1][5];
cout << F_NUM_ELS(b);
cout << endl;
cout << F_NUM_ELS(b[0]);
cout << endl;
结果是:
5
1
5
也就是
a元素有5个元素
b为1行5列