//さすがに動かなかったよ。

#include<iostream.h>

template<int N>
struct Init
{
static const double data = Init<N-1>::data * double(N);
static const Init<N-1> succ;
};

template<>
struct Init<1>
{
static const double data = 1.0;
};

template<int N>
inline const double* getArray(const Init<N> a)
{
return((double*)(&(a)));
}

Init<5> init;
const double* a = getArray(init);

int main(int Argc, char* Argv[])
{
cout << "\n";

for(int i = 0; i < 5; i++)
{
cout << " " << a[i];
}

cout << "\n";

cout << init.data << " ";
cout << init.succ.data << " ";
cout << init.succ.succ.data << " ";
cout << init.succ.succ.succ.data << " ";
cout << init.succ.succ.succ.succ.data << " ";

cout << "\n";

return(0);
}