в этом смысле свифтовый подход интересен (только ты слепо полагаешься на умность компилятора). Свифт вставляет динамический диспатч и иногда не использует мономорфирование вообще, если считает что у тебя будет выигрыш по размеру кода, а скорость не изменится потому что ты не в тесном цикле это делаешь.