playing with template metaprogramming. goal is to do index pattern generation at compile-time through a constructor later