Отвечу сам себе. Да constexpr функция не обязательно вызывается во время компиляции. Её можно вызывать и во время выполнения. В случае если аргументы известны только в ран тайм, это удобно чтобы не писать две версии одной и той же функции.
Да, но я не до конца понял как работает constexpr. Вроде не обязательно всегда именно if constexpr писать, потому что это больше для замены enable_if и свинае ада. Но я проверил что действительно в моем примере вызовы заменяются на константу. Но в общем случае это уже на усмотрение компилятора, т.е. если я присваиваю constexpr value что то, то выражение справа вычислится во время компиляции. Но всегда ли constexpr функции во время компиляции считается?
Куда там мусорить в $HOME разницы нету. Надо бы уже вводить жесткое разделение прав для приложений.
Каждое приложение запускается в своей песочнице со своим uid/cgroups и видит три папки:
/app (r-o) библиотеки и ресурсы поставляемые вместе с приложением.
/system (r-o) системные библиотеки, утилиты и сокеты с которыми разрешено взаимодействовать приложению.
/config (r-w) то что можно по желанию сохранить после удаления приложения.
/cache (r-w) то что можно удалить в любой момент для экономии места.
Далее система должна предоставлять возможность добавлять доступ к пользовательским папкам типа ~/Documents ~/Pictures и так далее c выбором прав r-o или r-w. А не как в андроиде сразу весь Storage.
При удалении приложения менеджер пакетов должен вычищать соответствующий cache.
Вроде в серверном Линуксе похожие практики используются, а на десктопе уже не как на заре unix, кроме vi, awk и sed развелось ещё миллион больших приложений сомнительного качества. Умеет ли в такое snap/flatpack?
Не знаю как в с++ оно себя ведёт, но в питоне каждый раз ввел символ все варнинги убрались, потом через какое то время pylint отработал и опять разместил подчеркивания по файлу. Аналогично и с rust тоже прямо видно что все перезапускается после каждого нажатия. В PyCharm и idea-rust оно как то всё динамично добавляется убирается и так же в QtCreator в случае c++.
Почему нету сравнения с qtcreator? Пробовали ли его до vs code? Там парсер кода на основе clang, а как у vs code? В сложных выражениях с темплейтами умеет в авто дополнение?
т.е. разрабы glibc, жертвуют нормально подсветкой синтакиса, оборачивают все аргументы в запасные скобочки, расставляют переносы строк через "\" потому что 30 лет назад не было inline?
Для меня любой макрос это сразу знак что жди сюрпризов. Стараюсь их вообще не использовать. В коде на си плюс плюс их практически не вижу. Большинство вопросов решается темплейтами. Чтобы сэкономить пару слов вводить макрос тоже смысла нету, а если и есть то они обычно пишутся капсом чтобы не спутать с названием функции, и опять же IDE все подсвечивает. Почему в glibc isspace определили как макрос хотя во всех доках это функция из int в int, и что за такты процессора они на этом экономят я искренне недоумеваю. Со спецификой си не знаком, видел один раз ООП на макросах в гномовской g-lib, сочувствую.
У меня всё работает в qtcreator + clang-code-model.
Нету define:
Шланг умён и подсвечивает как функцию. Если интересно то Ctrl+Click я вижу из файла ctype.h:
Теперь сделаем что то плохое:
Ага явно видно макрос!
Не ужили ещё кто то пользуется IDE в которых макросы не выделяются другим цветом?
Upd: по традиции под статьёй единорога надо упомянуть про раст, там все макросы заканчиваются на "!".
Ютуб и Фейсбук банят все без разбора. Легче забанить чем потом по судам в разных странах тягаться. Все равно люди придут, а малый процент пользователей которые пострадают их не волнует. Только бизнес, никаких законов а тем более прав пользователей.
Sizeof это вообще те ещё грабли, смотрите на статьи от единорога. Вы видимо хорошо знаете си если у вас это не вызывает сложностей. Зачем если есть std::array?
Отвечу сам себе. Да constexpr функция не обязательно вызывается во время компиляции. Её можно вызывать и во время выполнения. В случае если аргументы известны только в ран тайм, это удобно чтобы не писать две версии одной и той же функции.
Да, но я не до конца понял как работает constexpr. Вроде не обязательно всегда именно if constexpr писать, потому что это больше для замены enable_if и свинае ада. Но я проверил что действительно в моем примере вызовы заменяются на константу. Но в общем случае это уже на усмотрение компилятора, т.е. если я присваиваю constexpr value что то, то выражение справа вычислится во время компиляции. Но всегда ли constexpr функции во время компиляции считается?
Кстати на C++14 можно тоже без рекурсии через constexpr.
Код: https://godbolt.org/z/FyR-Lw
Похоже на std::variant для enum.
Это квартальная проверка хабра. Заминусовали хорошо? Значит ещё торт.
Куда там мусорить в $HOME разницы нету. Надо бы уже вводить жесткое разделение прав для приложений.
Каждое приложение запускается в своей песочнице со своим uid/cgroups и видит три папки:
Далее система должна предоставлять возможность добавлять доступ к пользовательским папкам типа ~/Documents ~/Pictures и так далее c выбором прав r-o или r-w. А не как в андроиде сразу весь Storage.
При удалении приложения менеджер пакетов должен вычищать соответствующий cache.
Вроде в серверном Линуксе похожие практики используются, а на десктопе уже не как на заре unix, кроме vi, awk и sed развелось ещё миллион больших приложений сомнительного качества. Умеет ли в такое snap/flatpack?
Просто во введении автор писал как он пользовался vim, потому что других IDE под Linux не было, хотя QtCreator и CLion существуют довально давно.
Не знаю как в с++ оно себя ведёт, но в питоне каждый раз ввел символ все варнинги убрались, потом через какое то время pylint отработал и опять разместил подчеркивания по файлу. Аналогично и с rust тоже прямо видно что все перезапускается после каждого нажатия. В PyCharm и idea-rust оно как то всё динамично добавляется убирается и так же в QtCreator в случае c++.
Почему нету сравнения с qtcreator? Пробовали ли его до vs code? Там парсер кода на основе clang, а как у vs code? В сложных выражениях с темплейтами умеет в авто дополнение?
Это matplotlib? А чтобы интерактивно варщать настоящие 3D графики есть вариант?
Но как уже писали выше, GNU libc компилируется GCC.
т.е. разрабы glibc, жертвуют нормально подсветкой синтакиса, оборачивают все аргументы в запасные скобочки, расставляют переносы строк через "\" потому что 30 лет назад не было inline?
Для меня любой макрос это сразу знак что жди сюрпризов. Стараюсь их вообще не использовать. В коде на си плюс плюс их практически не вижу. Большинство вопросов решается темплейтами. Чтобы сэкономить пару слов вводить макрос тоже смысла нету, а если и есть то они обычно пишутся капсом чтобы не спутать с названием функции, и опять же IDE все подсвечивает. Почему в glibc isspace определили как макрос хотя во всех доках это функция из int в int, и что за такты процессора они на этом экономят я искренне недоумеваю. Со спецификой си не знаком, видел один раз ООП на макросах в гномовской g-lib, сочувствую.
Хотя это с++ и там определено
__NO_CTYPEв си действительно сплошные макросы повсюду.У меня всё работает в qtcreator + clang-code-model.



Нету define:
Шланг умён и подсвечивает как функцию. Если интересно то Ctrl+Click я вижу из файла ctype.h:
Теперь сделаем что то плохое:
Ага явно видно макрос!
Не ужили ещё кто то пользуется IDE в которых макросы не выделяются другим цветом?
Upd: по традиции под статьёй единорога надо упомянуть про раст, там все макросы заканчиваются на "!".
Ютуб и Фейсбук банят все без разбора. Легче забанить чем потом по судам в разных странах тягаться. Все равно люди придут, а малый процент пользователей которые пострадают их не волнует. Только бизнес, никаких законов а тем более прав пользователей.
Sizeof это вообще те ещё грабли, смотрите на статьи от единорога. Вы видимо хорошо знаете си если у вас это не вызывает сложностей. Зачем если есть std::array?
Это не я придумал, было в одном из постов Herb Sutter. Ну а что зато похоже на rust:
Перепутал с malloc и free. Но смысл тот же, без std::vector не удобно.