У тебя уже нет производительности - тебе на неё должно быть насрать.
К тому же, зачем тебе вектор, если у тебя уже статическое поле? Ты хочешь обходить своего питуха через вектор?
ахахахах ты заебал пля, нельзя так, там через Foo<Type> получаешь индекс, который берется из структуры. То есть, для каждого типа создается структура со static методом id, который возвращает static переменную с индексом для текущего типа. То есть, каждй тип имеет свою структуру, где лежит его индекс. Индексы типов никогда не совпадают, они последовательны, если тип Sos получил индекс 0, то Otsos получит индекс 1