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