Как работает этот шаблон кода для получения размера массива?

Интересно, почему этот вид кода может получить размер тестового массива? Я не знаком с грамматикой в ​​шаблоне. Может быть, кто-то может объяснить значение кода в template<typename,size_t>. Кроме того, ссылка ссылка также предпочтительнее.

#define dimof(array) (sizeof(DimofSizeHelper(array)))
template <typename T, size_t N>
char(&DimofSizeHelper(T(&array)[N]))[N];

void InitDynCalls()
{
    char test[20];
    size_t n = dimof(test);
    printf("%d", n);
}

61
задан John Kugelman supports Monica 17 October 2019 в 02:07
поделиться