class T { public: T(int); // ... }; T tarray[] = { T(1), T(2), T(3) }; |
#define array_size(array) (sizeof(array)/sizeof(array[0])) |
template <class T, int sz> int size(T (&array)[sz]) { return sz; } |
template <class T, int sz> char[sz] sizer(T (&array)[sz]); |
sizeof(sizer(array)); |