@trtt, change T to be a variant or use polymorphism. You can't have strong compile-time type safety with heterogeneous list, that just doesn't work. i.e. if you want to get a list [(int8, Packed), (int64, Packed), (string, Packed)], you can't.
So as I asked earlier, can you be more clear at which level you want heterogeneity, and at which level you want compile-time guarantee. And can you give an example with concrete result type of your list.
