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.
#cpp
Если кто-то вдруг ещё не знал, существуют рекомендации от создателей языка.
Недавно встретил поинт, что читать их полностью просто так оч тяжко из-за огромнейших размеров, потому предлагается следующий путь: откройте сайт у себя в закладках; в следующий раз, когда у вас возникнет вопрос, как лучше сделать, попробуйте поискать по документу; после нескольких таких случаев может вы наберётесь сил и осилите прочесть всё : )
https://isocpp.github.io/CppCoreGuidelines/
this->notes. pinned «#cpp На текущий момент это мой самый любимый доклад из всего, что я видел. https://www.youtube.com/watch?v=LIb3L4vKZ7U»