无论如何,在 C++ 编译时确保数组参数的长度?这样:
void foo(T arr[3]);
int main()
{
T a[5] = { /* ... */ };
foo(arr);
return 0;
}
会产生编译时错误吗?
是使用模板类型确保这一点的唯一方法
template <int N, class T>
struct Array{
T arr[N];
};
void foo(Array<3, T> &arr);
int main()
{
Array<5, T> a;
foo(a);
return 0;
}
还是有更惯用的方法来处理这个?