我遇到了以下代码,它返回C样式数组的大小。
template <typename Type, int N>
int GetArraySize(Type (&array)[N])
{
(void) sizeof (0[array]);
return N;
}
模板部分似乎已在this question中解释过了。
但是,我仍然不明白sizeof
行的效用是什么。有任何想法吗?
有人建议避免使用未使用的变量警告,但可以使用更简单的#pragma
,对吗?
此外,这段代码在任何情况下都会有效吗? Aren有没有限制?
答案 0 :(得分:10)
我认为该行的目的是静默未使用的变量警告。 更简单的是省略参数名称
template <typename Type, int N>
int GetArraySize(Type (&)[N])
{
return N;
}