次のコードは、Cスタイルの配列のサイズを返します。(void)sizeof(0 [array])はどういう意味ですか?
template <typename Type, int N>
int GetArraySize(Type (&array)[N])
{
(void) sizeof (0[array]);
return N;
}
テンプレート部分はすでにthis questionで説明されているようです。
でも、私はsizeof
行の有用性は理解できません。何か案は? 未使用の変数警告を避けることを提案している人もいますが、より簡単なものが使用されている可能性があります(右は#pragma
)。
さらに、このコードはどんな状況でも有効でしょうか?制限はありませんか?
'#pragma'は(ほとんどの主流のコンパイラはそれを実装するのですが)、標準ではありませんが、無効にキャストすることは – Curious
' 0 [配列]は '配列'と同じであるパラメータ名を省略するだろう[0] ' –
私はsizeof行に何のポイントも見ません。 'array'パラメータ名は、未使用の変数の警告を避けるために省略することができます。また 'size_t'を使用して返します。 – VTT