Similarly to __type_pack_element, C++ doesn't offer a way to extract a
the index of the first occurrence of a type in a parameter pack. This
means that we need to build up context for something that the compiler
already has, and then compute the value in a much less efficient manner
than the compiler.
Clang can compute this information without needing to use extra