// sizeofarray.cpp
#include <iostream>
template <typename T,int N>
int size(T (&Array)[N])
{
return N;
}
int main()
{
char p[]="Je suis trop bon, et vous?";
char q[size(p)]; // (A)
return 0;
}
Я слышал, что размер массива в C ++ должен быть постоянным выражением. Итак, char q[size(p)]
недействителен, я прав? Но у меня не было ошибок, когда я попробовал
g++ -Wall sizeofarray.cpp
Почему?
q[sizeof(p)]
в порядке, вы, наверное, имели в видуq[size(p)]
. Обратите внимание, что последнее станет действительным в C ++ 0x (если вы объявитеsize
какconstexpr
). - person avakar   schedule 30.09.2010