Re[12]: C++ illegal instruction
От: rg45 СССР  
Дата: 13.08.25 08:21
Оценка:
Здравствуйте, Pzz, Вы писали:

Pzz>>>Мой любимый пример: x = (flag ? sin : cos)(y); Опыт показывает, что эта простая конструкция приводит многих собеседователей в тупик, в диапазоне от "а что это значит?" и до "а что, так можно?".


A>>Должен признаться, что понял, что делает этот код, только после 15 минут разглядывания.


Pzz>Ну, молодец.


Pzz>А я по молодости разок-другой такое в продакшене применил (разумеется не с sin/cos, с какой-то другой парой функций с одинаковым прототипом). Сейчас бы я так делать не стал. Народ реально не догоняет (к огромному моему удивлению).


Я бы тоже не стал использовать такую конструкцию, и не только потому, что это ставит кого-то в тупик, а потому что выражение (flag ? sin : cos) имеет тип указателя на функцию. Т.е дополнительная косвенность появляется совершенно необосновано. Рассуждения примерно те же, что и в случае ++i vs i++. Подробнее здесь: 9. Не пессимизируйте преждевременно.
--
Справедливость выше закона. А человечность выше справедливости.
Отредактировано 13.08.2025 8:22 rg45 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.