#include <iostream>
 
template < unsigned int N, unsigned int P > struct cpow
{ enum { value = cpow<N,P-1>::value * N }; };
 
template < unsigned int N > struct cpow<N,0>
{ enum { value = 1 }; };
 
struct A
{
    int my_array[ cpow<2,8>::value ] ;
};
 
int main()
{
    std::cout << sizeof(A) << '\n' ;
}
