//main.cpp
#include <iostream>
using namespace std;
template <typename T, int N>
int getSize(T(&input)[N]) {
return sizeof(input) / sizeof(T);
}
int main() {
int A[4] = { 3, 2, 1, 5 };
cout << getSize(A) << endl; // ->4
return 0;
}
直接传数组名的话,会退化成指针,sizeof(input)不能获得数组长度。
所以要传引用,但传引用必须需要长度,所以用int N占位。