Я ещё думал над тем что возможно компилятор в обобщенной версии требует вот этот Idx параметр с собой таскать потому теоретически может два раза тип встречаться в списке. И тогда действительно вот этот unconstrait type parameter ошибка имеет смысл. Но каким образом ему доказать что у нас список уникальный я не знаю. Скорее всего никак )
Ну тут одна проблема. Что пользователь в одном месте фиксирует что ему надо и все. Если он захочет как то это выбирать в рантайме или собирать этот список в разных функциях на ходу, то будет проблема.