#include <iostream>

template<typename T, std::size_t N>
char (& array_size_helper( const T(&)[N]))[N];

#define ARRAY_SIZE(x) sizeof(array_size_helper(x))


int main()
{
    int q[5];
    
    std::cout << ARRAY_SIZE(q) << std::endl;
    
    double z[ARRAY_SIZE(q)];
    
    std::cout << ARRAY_SIZE(z) << std::endl;
    
    std::cout << sizeof(z) / sizeof(double) << std::endl;
    
    return 0;
}