enum typeid { ...}; упоминания типов
индексация упоминаниями ассоциированного массива размеров не лишнее
и конечно явные преобразования данных по месту в switch или через union
Nulltiton, в само перечисление нужно вставить список перечислителей - для области видимости, чтобы их использовать в качестве упоминаний о типе
например назвать enum typeid { int_identity=0, bool_identity, и другие }
каждый чайник знает, а Вы подумали что я предлагаю новую форму синтаксиса с эллипсисом
а в массиве размеров индексация может быть проведена sizes[(size_t)typeid.int_identity]