Daniil
Слишком кратко выразился, извиняюсь
Александр
я уже сказал, мне нужно выводить во время компиляции, а не в рантайме, чтобы отлаживать промежуточные выражения. да и проблему решил уже
Daniil
Как решил?
Daniil
Я просто тоже сейчас с похожим столкнулся, интересно вот
Александр
я ж написал выше - для классов достаточно обратиться к несуществующему члену, о чём компилятор сразу ругнётся и выведет имя класса sizeof(foo::NON_EXISTING_MEMBER)
Ильяс
Есть кто то, кто с snmp работал, посоветуйте литературу, пожалуйста.
🦥Alex Fails
О, опять линк вбросили)
🦥Alex Fails
привет, ребят, откуда вы к нам пришли?)
Anatoly
[...] на IT Global Meetup ссылка была
Alexander "SonnySlave"
The C++ standards committee is starting a new study-group for Unicode: SG16.
Alexander "SonnySlave"
New span class added to C++20 as a view on arrays.
Alexander "SonnySlave"
string::reserve() will not shrink your string.
Anonymous
The C++ standards committee is starting a new study-group for Unicode: SG16.
Через 12 лет будут юникодные строки?
Alexander "SonnySlave"
скорее через 15
🦥Alex Fails
ок, спасибо
Alexander "SonnySlave"
конечно же нет 😊
Anatoly
а что сейчас происходит? https://twitter.com/AlisdairMered мне всю ленту твиттера заспамил
Anatoly
а, видимо очередное заседание комитета
Oleg
конференция по плюсам
Egor
итоги подводят
Oleg
угуэ
Anatoly
https://www.reddit.com/r/cpp/comments/854mu9/2018_jacksonville_iso_c_committee_reddit_trip/
Alexander "SonnySlave"
Extend chrono to support dates, calendars and time zones in #Cpp20 at #CppJax
Alexander "SonnySlave"
УРАААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААААА
Egor
пора бы
B
у кого-нибудь есть опыт использования статических анализаторов (кроме cppcheck)? в частности scan-build?
Constantine
The C++ standards committee is starting a new study-group for Unicode: SG16.
Вангую что сделают как всегда
Constantine
Вангую что сделают как всегда
В частности, забудут принять в стандарт гарантию lower(upper(x)) == lower(x)
B
что именно интересует?
я шаманю, пытаюсь его настроить. во-первых, он во время компиляции показывает много ошибок типа таких /usr/lib/gcc/x86_64-linux-gnu/5/include/xmmintrin.h:333:19: error: use of undeclared identifier '__builtin_ia32_movss' return (__m128) __builtin_ia32_movss ((__v4sf) __A, во-вторых, стоит ли мне вообще это как-то решать и его использовать? сходу, он в коде (~30-40kloc) не находит ошибок, хотя код далек от идеала
Alexander "SonnySlave"
ну попробуй поюзать пивас-студию
Alexander "SonnySlave"
я связкой cppcheck + pvs-studio доволен
B
а как clang-tidy?
B
я доволен его выводом, но не знаю как визуализироовать хорошо
Alexander "SonnySlave"
а как clang-tidy?
крайне крутая вещь, рекомендую
Alexander "SonnySlave"
есть крайне положительный опыт использования в проде
B
а как его использовали? он просто варнинги показывает. хочется хоть какое-нибудь решение для визуализации, хранения этого всего дела
Alexander "SonnySlave"
есть бот, который гоняет проверки. если боту что-то не нравится, код не проходит ревью
Alexander "SonnySlave"
+ написаны свои различные кастомные проверки
B
бот есть в опенсорсе? :) я бы заюзал
Alexander "SonnySlave"
бот есть в опенсорсе? :) я бы заюзал
а что там юзать? это просто билд-бот)
Alexander "SonnySlave"
какой-нибудь jenkins, который гоняет clang-tidy на проекте
Alexander "SonnySlave"
github?
нет, у нас своя билд-инфрастуктура
B
да, но потом этот вывод clang-tidy нужно распарсить и в идеале закинуть в PR на github
Alexander "SonnySlave"
да, но потом этот вывод clang-tidy нужно распарсить и в идеале закинуть в PR на github
так он просто варнингами срёт. Если что-то в выводе оказалось - бей тревогу и кидай логи
Igor
+ написаны свои различные кастомные проверки
вот на это бы я с интересом посмотрел ;)
Alexander "SonnySlave"
мб потом наши проверки выкинем в опен-сорс
Igor
хотя бы ради "что людей волнует" и "как люди пишут расширения для тайди"
Alexander "SonnySlave"
помогает, например, для проверки внутренних гайдлайнов
Alexander "SonnySlave"
помогает находить различные неоптимальности и интересные ошибки при миграции кода с одного стнадарта на другой
Alexander "SonnySlave"
например, бросающий исключение деструктор
Igor
//на самом деле, немного расстраивает что тайди нужно пересобирать - хотелось бы скормить -f=guidelines.py и чтобы он оттуда выцепил 1) список встроенных проверок для -checks= 2) дополнительные юзерские проверки написанные простЪйшим и удобнЪйшим образом
Alexander "SonnySlave"
вот вообще не напрягает, так как пересобирается очень быстро
Igor
это ни разу не напрягает на самом деле)
честно - ни разу не пробовал в его пересборку, но со сторонней колокольни "взять сырцы модифицированного тайди и пересобраться на нужной платформе" какбудтобы просто монументально проигрывает "поставить тайди через pacman -S / apt-get install / download llvm-win32-5.0.1.exe и скачать гайдлайны на скриптовом языке"
Alexander "SonnySlave"
тут спорить не буду. Но что поделаешь, что все матчеры это крестовый код 😊
Igor
хотя и наверняка колоссально выигрывает по производительности
Alexander "SonnySlave"
мне кажется, перфоманс тут не самое главное (хотя как знать)
Igor
просто как будто бы уже есть clang-query которому матчеры можно скармливать в виде аргументов командной строки...
Alexander "SonnySlave"
да, есть такой. Рекомендую с ним поиграться кстати
Alexander "SonnySlave"
вообще разработка чекеров ведётся с помощью clang-tidy + clang-query + clang-check
Egor
а как у Хиннарта таймзоны подтягиваются из новых баз? кто-нибудь смотрел?
Igor
struct Derived : Base { Value v; Derived(X) : v(get_value(X)) , Base(v) {} static Value get_value(X); }; уб, неправильный дизайн (наследование вместо аггрегации), или норм?
Igor
а окей, кланг разрешил вопрос: warning: field 'v' will be initialized after base 'Base', переходим к агрегации...
Ostap ꑭ
В конструкторе всегда инициализация идёт в обратном порядке
Matwey
struct Derived : Base { Value v; Derived(X) : v(get_value(X)) , Base(v) {} static Value get_value(X); }; уб, неправильный дизайн (наследование вместо аггрегации), или норм?
Так не будет работать. Используй множественное наследование. Инициализируй Value v в первом вспомогательном предке и передай его в конструктор второго предка
Igor
Так не будет работать. Используй множественное наследование. Инициализируй Value v в первом вспомогательном предке и передай его в конструктор второго предка
слиишком оверкилл - тут класс-враппер из десяти строчек над Base просто подумалось, что можно было бы выкрутиться поизящнее, если унаследоваться от Base а не хранить его внутри - но несудьба
Matwey
Ну это от семантики зависит
Matwey
Я просто сказал, как исправить пример
Co(n)stantine👨‍🔬
Co(n)stantine👨‍🔬
Можно посмотреть?
Stanislav
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/p0355r5.html
Alexander "SonnySlave"
Co(n)stantine👨‍🔬