C++26 против дедовских методов: битва за enum-to-string

Новый стандарт C++26 предлагает рефлексию для enum-to-string — но стоит ли овчинка выделки?
Разработчики C++ снова на распутье. С одной стороны — проверенные годами макросы и кодогенерация, с другой — долгожданная рефлексия в C++26. Виторио Ромео решил провести холиварное сравнение: насколько быстрее, безопаснее и удобнее новый подход?
Статья честно показывает, что старый путь (ручное перечисление строк или макросы) работает быстро, но заставляет разработчика писать тонны шаблонного кода. Как сборка IKEA без инструкции: вроде всё понятно, но руки опускаются уже после второго шкафа. Рефлексия же обещает магию: компилятор сам генерирует строки по enum-значениям. Но есть нюанс — время компиляции.
Автор провёл бенчмарки: для 100 значений enum рефлексия проигрывает по скорости компиляции в 2-3 раза, но выигрывает по удобству поддержки. Если у вас enum на 1000 полей (да, бывает и такое, особенно в legacy-проектах, где каждый enum — как чек-лист перед апокалипсисом), то рефлексия может стать палочкой-выручалочкой.
Что выбрать? Если проект маленький и вы не планируете расширять enum — старый способ сойдёт. Если же кодовая база растёт как бамбук после дождя — присмотритесь к C++26. Только не забудьте обновить компилятор — а то некоторые товарищи до сих пор на C++14 сидят, как на старом добром Wi-Fi у бабушки.
Комментарий студии METABYTE: Мы за то, чтобы код писался один раз, а читался годами. Если рефлексия C++26 сократит количество макросов в вашем проекте — мы „за“. А то иногда смотришь на код и думаешь: это C++ или препроцессорная магия?