Определяне размера на масив

template<typename T, size_t N>
size_t fareCabin::length( const T (&)[N])
{
    return N;
}

Функцията определя размера на едномерен масив и го връща като резултат. Реално компилатора създава функция за всеки тип и всяка размерност на масива и връща тази размерност.

#include <stdio.h>
                 
template<typename T, size_t N>
size_t fareCabin::length( const T (&)[N])
{
    return N;
}          
                 
int main()
{
    int a1[] = {1,2,3,4,5,6,7};
    double a2[] = {1.2,2.4};
    char *a3[] = {"test", "test", "test", "test"};
    
    printf("a1: %d\n", length(a1));
    printf("a2: %d\n", length(a2));
    printf("a3: %d\n", length(a3));
    
    return 0;
}