C11 type-generic expressions - почему бы просто не добавить перегрузку функций?

Я просто читал статью в Википедии о 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++?

22
задан Suraj Jain 13 February 2017 в 05:04
поделиться