❤1
#cpp
Практический пример перегрузки operator,().
https://www.boost.org/doc/libs/1_76_0/libs/assign/doc/index.html
Практический пример перегрузки 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
Вы просто посмотрите, как сексуально он реализован.
https://stackoverflow.com/questions/67959239/what-is-complexity-of-stdcommon-type
🔥1
#cpp
От @gepardius.
"Расскажу про include-what-you-use. Этот инструмент позволяет делать следующее:
- находить неиспользуемые
- находить
Звучит довольно полезно, поэтому я поставил его из репозиториев Debian и решил запустить:
Во-первых, он хотел выкинуть
Во-вторых, иногда он предлагал использовать какие-то странные include'ы вроде
В-четвертых, он много ругался на код Dodecahedron'а. Этот код я не хочу исправлять, в как отключить проверку для некоторых файлов, я не нашел.
В общем, ложных срабатываний в результатах получилось довольно много, поэтому я не стал добавлять include-what-you-use в CI. Просто буду его запускать время от времени и смотреть.
Ну и наконец, ссылка на коммит, в котором я все это исправил."
Ещё у Саши есть заметки про его шахматный движок: t.me/sofcheck.
От @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.
packages.debian.org
Debian -- Details of package iwyu in bullseye
Analyze #includes in C and C++ source files
#cpp #stackoverflow
https://stackoverflow.com/questions/13127455/what-does-the-standard-library-guarantee-about-self-move-assignment
https://stackoverflow.com/questions/13127455/what-does-the-standard-library-guarantee-about-self-move-assignment
Stack Overflow
What does the standard library guarantee about self move assignment?
What does the C++11 standard say about self move assignment in relation to the standard library? To be more concrete, what, if anything, is guaranteed about what selfAssign does?
template<class...
template<class...