(void)sizeof(0 [array])是什么意思?

时间:2017-06-19 09:28:08

标签: c++ arrays templates

我遇到了以下代码,它返回C样式数组的大小。

template <typename Type, int N>
int GetArraySize(Type (&array)[N])
{
    (void) sizeof (0[array]);
    return N;
}

模板部分似乎已在this question中解释过了。

但是,我仍然不明白sizeof行的效用是什么。有任何想法吗? 有人建议避免使用未使用的变量警告,但可以使用更简单的#pragma,对吗?

此外,这段代码在任何情况下都会有效吗? Aren有没有限制?

1 个答案:

答案 0 :(得分:10)

我认为该行的目的是静默未使用的变量警告。 更简单的是省略参数名称

template <typename Type, int N>
int GetArraySize(Type (&)[N])
{
    return N;
}