Evgenii Moiseenko
вопрос зачем?
темплейты/дженерики - это два способа реализации параметрического полиморфизма.
Разница в том, что темплейты реализуют его с помощью мономорфизаци, т.е. как раз когда для каждого инстанса функции/класса под тип генерируется код.
В дженериках необходимости генерировать код под каждый инстанс просто нет, потому что все значения в рантайме имеют одинаковую структуру (в первом приближении все объекты — это просто указатели в кучу), и если программа протайпчекалась, то гарантируется что в рантайме уже не будет ошибок из-за несоответствия типов.
Собственно в C/C++ как и в Rust используются мономорфизация как раз потому что переменные зачастую передаются по значению и там как раз не гарантируется какое-то унифицированное представление в рантайме.
фактически я решаю задачу рефлексии типов в TS (чтобы например сделать как в c# JsonConvert.Deserialize<MyClass>(json))