A good start is half the battle.
Add README.md
Implement 1d array allocator function

- Remove constructor without origin pointer - We want to keep template array struct as simple as possible
Add allocation of 2d array

- We will use column major order like Matlab or Fortran, different from C
Add allocation of n-dimensional array

- Now 1d and 2d versions are template specialization
Unroll small loops with template metaprogramming

- I think compiler can unroll these loops, but I just want to try template metaprogramming :D
- reference: http://stackoverflow.com/questions/2382137/how-to-unroll-a-short-loop-in-c-using-templates
Add size() function: returns count of all elements in array
Test variadic template

- Reference: http://en.wikipedia.org/wiki/Variadic_template
N-dimensional array allocator with variadic template

- 1d and 2d array allocator are replaced with variadic template
minor: arrange test code
Add zeros() function: create array filled with zeros

- Add raw_pointer() and operator T*() to array_t
- Add array_allocate.h and move array allocating functions
Remove allocator with size_type*
Add begin/end iterator to array_t / Rewrite zeros() with iterator and add ones()
minor: rename multiply_all -> product
Add print() function
Add empty array allocator and array_t.empty() function
Remove typedef except iterator
Add size(dim), length(), height(), width() function to array_t
Add namespace numcpp and rename header directory numcpp2 -> numcpp
Move begin(), end() iterator functions outside of array_t

- To keep array_t simple
- Add fill(dst, value) function