Я просто читал статью Википедии о C11, новую версию стандарта C, выпущенную в декабре 2011 года, и я увидел что одной из добавленных функций было "типовые выражения":
Типовые выражения с использованием ключевого слова
_Generic
. Например, следующий макрос cbrt (x) переводит на cbrtl (x), cbrt (x) или cbrtf (x)в зависимости от типа x:#define cbrt(X) _Generic((X), long double: cbrtl, \ default: cbrt, \ float: cbrtf)(X)
Это выглядит довольно ужасно для меня - если они все равно изменят язык, почему бы просто не добавить перегрузку функций, как в С++?