) Visual C++ 10 поставляется с файлом stdlib.h, который, среди прочего, содержит этот gem:
template
char (*__countof_helper(UNALIGNED _CountofType (&_Array)[_SizeOfArray]))[_SizeOfArray];
#define _countof(_Array) (sizeof(*__countof_helper(_Array)) + 0)
, который использует хитрый трюк с шаблоном для определения размера массива] и предотвращают передачу указателей в __countof
.
Какова цель + 0
в определении макроса? Какую проблему это решает?