#pragma once template struct indices { typedef indices next; }; template struct build_indices { typedef typename build_indices::type::next type; }; template<> struct build_indices<0> { typedef indices<> type; };