this->notes.
4.54K subscribers
29 photos
1 file
338 links
О разработке, архитектуре и C++.

Tags: #common, #cpp, #highload и другие можно найти поиском.
Задачки: #poll.
Мои публикации: #pub.
Автор и предложка: @vanyakhodor.
GitHub: dasfex.
Download Telegram
Channel created
#cpp
Практический пример перегрузки operator,().
https://www.boost.org/doc/libs/1_76_0/libs/assign/doc/index.html
#cpp #stackoverflow
Вы просто посмотрите, как сексуально он реализован.
https://stackoverflow.com/questions/67959239/what-is-complexity-of-stdcommon-type
🔥1
#cpp

От @gepardius.

"Расскажу про include-what-you-use. Этот инструмент позволяет делать следующее:
- находить неиспользуемые include
- находить include'ы, которые стоит добавить. Например, мы в файле b.h пишем #include "a.h". А в некотором cpp-файле делаем #include "b.h" и используем как функции из b.h, так и функции из a.h. Тогда include-what-you-use предложит заинклудить a.h
- предлагать добавить forward declaration'ы вместо того, чтобы инклудить заголовки. Таким образом можно уменьшить время компиляции

Звучит довольно полезно, поэтому я поставил его из репозиториев Debian и решил запустить:
$ cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=ON ..
$ make -j
$ iwyu_tool -p . --

include-what-you-use интегрирован с CMake, поэтому его можно сразу запускать при сборке:
$ CC=clang CXX=clang++ cmake -DCMAKE_CXX_INCLUDE_WHAT_YOU_USE=iwyu ..
$ make -j

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

Во-первых, он хотел выкинуть config.h. В этом файле содержатся всякие макросы, которые затем с #ifdef'ами используются в коде.

Во-вторых, иногда он предлагал использовать какие-то странные include'ы вроде #include <ext/alloc_traits.h>.

В-третьих, он предлагал очень странные вещи, когда я подключал gtest/gtest.h в Google-тестах: ссылка.

В-четвертых, он много ругался на код Dodecahedron'а. Этот код я не хочу исправлять, в как отключить проверку для некоторых файлов, я не нашел.

В общем, ложных срабатываний в результатах получилось довольно много, поэтому я не стал добавлять include-what-you-use в CI. Просто буду его запускать время от времени и смотреть.

Ну и наконец, ссылка на коммит, в котором я все это исправил."

Ещё у Саши есть заметки про его шахматный движок: t.me/sofcheck.