пятница, 15 июля 2022 г.

вторник, 12 июля 2022 г.

[prog.c++] Встретил проект на C++98 в котором непонятно чем могут помочь более свежие стандарты C++

Заглянул сегодня в один C++ный проект, в который есть шанс вляпаться или поучаствовать (пока не знаю, положительную или отрицательную конотацию применять). Проект на C++98. Ага, в 2022-ом году.

Но самое интересное написан он так, что глядя на исходный код я практически не представляю, что бы в коде можно было бы улучшить за счет возможностей из новых стандартов.

Разве что enum class вместо обычных enum-ов. А то в применяющихся enum-ах настолько корявые префиксы для избежания совпадения имен, что просто атас.

Ну и, может быть, где-то можно было бы move semantic применить дабы управление временем жизни для каких-то объектов стало бы более очевидным.

Еще, наверное, override для обозначения переопределенных в производных классах виртуальных методов.

Вот, пожалуй, и все. Даже удивительно.

Проект написан на, по сути, "Си с классами". Хотя исключения применяются. Местами даже простенькие шаблоны.

Давненько ни с чем подобным не сталкивался.

PS. На закуску одна строчка из этого проекта. Просто для развлечения ;)

COperator *pop = (*((*((*pexpr)[1]))[0]))[0]->Pop();

понедельник, 11 июля 2022 г.

[prog.c++] Расстроен одним из нововведений в fmtlib-9.0.0

Намедни вышла очередная версия замечательной библиотеки fmtlib. Одно из нововведений версии 9.0, а именно отказ от поддержки типов для которых определен оператор сдвига в std::ostream, сильно меня расстроило. И заставило потратить около четырех часов на выходных на то, чтобы адаптировать под fmtlib-9.0 наши OpenSource проекты arataga и RESTinio.

Тратить время на то, чтобы исправить сломанный другими людьми код мне не понравилось. Поэтому выскажу несколько своих незлых тихих слов.

Итак, что случилось в fmtlib-9.0.0?

В предыдущих версиях fmtlib можно было легко использовать типы, для которых определен оператор сдвига в std::ostream. Например: