Alexey
Запрещать, или выключать? Или полагаться на дефолт компиляторный? А какого компилятора дефолт? А если включать, то вот вообще все варнинги для всех компиляторов?
Vsevolod
нужны чоткие правила статического анализа
Alexander "SonnySlave"
хм, просто встраивается в ci и всё
Alexander "SonnySlave"
каждую ночь рассылается blame list тем, кто шакодил
Alexander "SonnySlave"
если за собой не подтирает шкодник - ругать
Alexander "SonnySlave"
всё уже давно придумано за нас
Samat
А современные компиляторы оптимизируют push_back в emplace_back, там, где это можно?
Alexander
А если либа генерирует кучу варнингов на gcc 4.2
Alexander
Левая
Alexander "SonnySlave"
А если либа генерирует кучу варнингов на gcc 4.2
посмотри доклады пивас-сутдии и пойми, как готовить стат. анализ и как бороться с варнингами
Vsevolod
-Wduplicated-cond - вот такое или -Wnull-dereference такое, помогают
Anonymous
А если либа генерирует кучу варнингов на gcc 4.2
Я бы усомнился в качестве реализации и пошел искать альтернативу.
Vsevolod
уфф
Alexander "SonnySlave"
Я бы усомнился в качестве реализации и пошел искать альтернативу.
не всегд авозможно. можно просто н аних забить
Alexey
Да? То есть напрмер вот такое надо оставлять без варнинга? int foo(int a, int b) { auto res = a+b; }
Vsevolod
ну вот есть у меня юзеры с openbsd
Alexander "SonnySlave"
так как от тебя это не сильно зависит
Vsevolod
и много
Vsevolod
еще есть несколько людей с соляркой
Alexander
Gtest генерирует, но переезжать уже дорого ибо легаси
Vsevolod
и с армом/мипсом
Alexander
На платежных терминалах до сих пор компиляторы есть gcc 4.2, 4.3
Alexander
Armv5 ядро
Igor
так ты отключаешь полезные варнинги, не получая вообще никакого профита взамен
отключаешь только на заведомо сбоящем компиляторе, же - а на 4.8 варн продолжает появляться только в нужных местах, нет?
Alexander
Буст 1.64 собирается без корутин и процесс 😅
Pavel
https://godbolt.org/g/Fi6REC
Pavel
уже видели?
Matwey
Armv5 ядро
Это какой-то микроконтроллер?
Alexander
Это какой-то микроконтроллер?
Arm9 проц, armv5 архитектура
Matwey
Arm9 проц, armv5 архитектура
Но это же старье
Oleg
Народ, есть такая задачка: n shared_ptr хранятся в контейнер. У них нужно вызвать один метод и получить ответ через событие. Ответ может прийти как синхронно, так и асинхронно. По ответу нужно удалить шаредптр. Как это красиво реализовать, а то у меня пока получается только через копию контейнера
Alexander
Но это же старье
Ага, но оборудование выпускают. Там ещё 64 мб озу и 64 мб флешка. Даж линукс тянет.
Oleg
такие существуют?
Oleg
// у меня мапка
Александр
мапка нормально удаляет
Alexander
Но это же старье
Curl SQLite OpenSSL собирается, жить можно. Даже в телеграмм бота можно слать приветы)
Александр
нет.
что - нет?
Александр
во время итерирования по контейнеру нужно его изменять что ли?
Александр
for (auto it = m.begin(); it != m.end(); ) { if (some_cond) it = m.erase(it); else ++it; }
Vsevolod
у всех контейнеров есть гарантии на валидность итераторов в разных случаях
Vsevolod
std::list и std::map вполне себе валидны при удалении элементов
Vsevolod
unordered/vector - нет
Oleg
как тут код постить?
Oleg
https://bpaste.net/show/24d227cf5dd5
Vsevolod
ну и вообще для таких целей я бы использовал weak_ptr в контейнере, а потом бы его чистил периодически
Oleg
во тк выглядит ситуация. Пробюлема в том, что OnStopped может быть вызван как синхронно, так и асинхронно
kitsu
https://bpaste.net/show/24d227cf5dd5
Производительность сильно критична? Если нет - поставь мьютекс и не парься
kitsu
В смысле мьютекс? Там одноптотчное приложение
Окей, тогда я видимо не очень понимаю в чем проблема
Egor
во тк выглядит ситуация. Пробюлема в том, что OnStopped может быть вызван как синхронно, так и асинхронно
А в чём принципиальное отличие "синхронного" и "асинхронного" подхода, если у нас ровно один поток на всё приложение?
Nik
Мне кажется, или "функция может быть вызвана асинхронно" уже подразумевает многопоточность?
Egor
во тк выглядит ситуация. Пробюлема в том, что OnStopped может быть вызван как синхронно, так и асинхронно
А, в смысле, что там есть метод Stop, который вызывает OnStopped, но при этом итерируется по map?
Александр
В таком случае можно помечать элементы удаленными, а потом отдельно удалять из контейнера
Egor
А можно просто при итерировании сначала делать ++, а потом вызывать Stop.
Egor
Если есть гарантия, что следующий элемент не будет удалён — то ок.
Nik
void foo() { for(int i = 0; i < 10; i++) yield someStuff(i); } } Если под корутинами подразумевается что-то такое, то, афак, вызов foo() будет блокирующим, т.е. не асинхронным
Oleg
А в чём принципиальное отличие "синхронного" и "асинхронного" подхода, если у нас ровно один поток на всё приложение?
Там внутри стейтмашина. И в одной ситуации произойдет вызов Stop->...->OnStopped, а в другой Stop->... сидим в стейте, ивентлуп работает...->OnStopped
Oleg
Там асинхронно работает механизм rabbit, но само приложение синхронное.
Oleg
tempIt = it++; tempIt->Stop() ?
Egor
Если мы знаем, что tempit гарантированно не будет удалён при вызове Stop
Pepe 🐸
gcc 4.2 довольно сильно тупит в случае: int var; if (cond) { var = 1; } else { var = 2; } printf("%d\n", var);
ну может логично, ибо у тебя там кондишны... хотя 4.2 это еще наверно до моего рождения
Ignat
я думал, наш 4.7.2 — говно мамонта, а у людей, оказывается, и 4.2 бывает...
Vladislav
ждем людей, жалующихся на msvc6
Maxim
У меня есть сборка на 4.0.1
Maxim
Для обратной совместмости. И язык не выше с++11
Igor
я думал, наш 4.7.2 — говно мамонта, а у людей, оказывается, и 4.2 бывает...
мы пока ещё 4.4.1 не дропнули, потом будем на 4.8.3 сидеть
Vsevolod
В 4.0 не было c++11
Alexander "SonnySlave"
В 4.0 не было c++11
ну да, в 2005 году-то 😊
Berkus
с Gflags включенным в винде Heap Corruption в нём детектит
для престоноподелия это нормально
Oleg
я думал, наш 4.7.2 — говно мамонта, а у людей, оказывается, и 4.2 бывает...
Ахах, у нас 4.3. На него перешли где-то год назад с 3.8.
Berkus
lego mindstorms ev3? 😊
Nintendo Labo ev1
Светомеч
lego mindstorms ev3? 😊
Милая штука, см ev3dev.org