sizeof
陣列參數會退化成指標
cpp
void f1(char a[20]); // 其實是 char*,sizeof(a) == 8
void f2(char (&a)[10]); // reference,sizeof(a) == 10,只收長度 10
template <size_t N>
void f3(char (&a)[N]); // reference + 推導,任意長度都正確要保留長度:用 array reference + template,或改用 std::array / std::span。
不建構物件取得成員大小
cpp
sizeof(Foo::m); // C++11
sizeof(((Foo*)0)->m); // C 寫法:sizeof 不會真的 evaluate