а вот скажите, кстати
зачем в языке и функции, и макросы? при наличии параметрических типов
Параметрический полимофизм закрывает только одну грань кодогенерации, и не самую большую.
Параметрический полиморфизм не сможет тебе автоматически сгенерировать новый тип по заданной семантике (представь генерацию парсера по грамматике, к примеру). Не сможет автоматически импементировать трейт (читай интерфейс) тривиальным образом и т.п.