tgoop.com/cxx95/134
Last Update:
#compiler
День, когда умер CRTP
По исходникам проектов на C++ можно определять, примерно в какое время был написан код
В C++23 есть единственная крупная фича, ради которой стоило его ждать - deducing this
Long story short, в каждом методе используется неявный "нулевой" параметр this
, эта фича добавляет возможность явно указать этот параметр, причем необязательно с исходным типом (можно заиспользовать шаблон). Это оказалось очень нужным - уменьшает дублирование методов, убирает необходимость в CRTP, позволяет удобнее рекурсивные лямбды, и прочее
Конечно, у deducing this есть ряд drawbacks
auto
, auto&&
, decltype(auto)
, и специально добавили срань как std::forward_like.
Реализация deducing this наконец-то появилась в LLVM/Clang 18, который зарелизился 6 марта
Но уже сейчас можно изучать вопрос - как лучше всего подготовиться к использованию этой фичи и гарантировать, что все перестанут писать "по-старому"?
В этом нам поможет libclang
! Мы можем написать простые python-тесты на исходный код (о них писал тут
Первым делом нужно, чтобы в проекте генерировался compile_commands.json
. Это простой список команд для компилятора, его описание тут, он нужен для многих вещей, например для автокомплита.
Его создание поддерживается в CMake, для этого в корневом CMakeLists.txt
надо добавить:
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
Потом надо поставить пакеты из этого поста
ПРОДОЛЖЕНИЕ В КОММЕНТАРИЯХ