From iris-cpp/x4@b0533fb#diff-c36f8b2f04f07ea70d8e6740aa6ee8139a949624ace05d61e007dc45fec7c7f4R19
It turned out that iris::type_list<Ts...> is quite useful as a minimalist type holder in advanced metafunctions. We should split it into <iris/type_list.hpp>. It is strongly advised to avoid creating ad-hoc detail::type_list and use iris::type_list whenever possible, as it would benefit from compiler's internal instantiation cache.
Perhaps we should also move pack indexing to the same header.