Reflection support by means of template metaprogramming