ARRAYSIZE a macro C ++: como funciona?
Ok eu não estouinteiramente um novato, mas não posso dizer que entendi a macro a seguir. A parte mais confusa é a divisão com o valor convertido em size_t: o que diabos isso faz? Especialmente, já que vejo um operador de negação que, até onde sei, pode resultar em um valor zero. Isso não significa que pode levar a um erro de divisão por zero? (A propósito, a macroé correto e funciona lindamente.)
#define ARRAYSIZE(a) \
((sizeof(a) / sizeof(*(a))) / \
static_cast<size_t>(!(sizeof(a) % sizeof(*(a)))))