One can define a static array at compile time as follows:

```
const std::size_t size = 5;    
unsigned int list[size] = { 1, 2, 3, 4, 5 };

```

**Question 1** - Is it possible by using various kinds of metaprogramming techniques to assign these values "programmatically" at compile time?

**Question 2** - Assuming all the values in the array are to be the same barr a few, is it possible to selectively assign values at compile time in a programmatic manner?

eg:

```
const std::size_t size = 7;        
unsigned int list[size] = { 0, 0, 2, 3, 0, 0, 0 };

```

1. Solutions using C++0x are welcome
2. The array may be quite large, few
hundred elements long
3. The array for now will only consist of
POD types
4. It can also be assumed the size of
the array will be known beforehand,
in a static compile-time compliant
manner.
5. Solutions must be in C++ ***(no script, no macros, no pp
or code generator based solutions pls)***

**UPDATE:** Georg Fritzsche's solution is amazing, needs a little work to get it compiling on msvc and intel compilers, but nonetheless a very interesting approach to the problem.