#include <iostream>

template < typename T, std::size_t N > void foo( T(&array)[N] )
{
	std::cout << "size: " << sizeof(array)  
	          << "    num elements: " << N << '\n' ;
}

int main() 
{
	int a[23] ; foo(a) ;
	const double b[57] = {0} ; foo(b) ; 
}