Stanislav
Alexander "SonnySlave"
Berkus
— Current conanbuildinfo.cmake directory: /Users/travis/build/procxx/kepka/_build_
CMake Error at _build_/conanbuildinfo.cmake:474 (message):
Incorrect 'gcc', is not the one detected by CMake: 'AppleClang'
Call Stack (most recent call first):
_build_/conanbuildinfo.cmake:173 (conan_check_compiler)
CMakeLists.txt:30 (conan_basic_setup)
божечки, отвратительно
Berkus
как этому позорищу сказать что gcc на самом деле кланг?
Alexander "SonnySlave"
спрашивай в таске)
Alexander "SonnySlave"
я вообще хз, как оно должно работать под макосью
Andrei
Roman
Нет. Стандарт C++ задает порядок вывода в потоки, см ссылку выше
Egor
Это порядок вывода.
Egor
Но не порядок, в котором это что-то прочитается из пайпа.
Roman
Проблема в том что дальше это всё в пайпах буферезуется и другой процесс уже не может синхронизоваться
Roman
Проблему можно было бы решить пайпом без буфера
Egor
Каким образом?
Egor
Блокировать дочерний поток, пока родитель не прочитал?
Roman
Да
Egor
В целом решит проблему, да.
Berkus
Roman
Точнее не так, нужно non-blocking io
Berkus
Roman
т.е. consumer должен посмотреть в каком из потоков что-то есть, а потом уже читать
Egor
Кажется, что другой хороший способ решить эту проблему — добавить галочку "мне пофиг на разделение stdout и stderr, выводите в точном порядке", чтобы IDE открыла один общий пайп на stdout/stderr и тогда уже сама программа думала, что там у неё с чем синхронизируется
Roman
Но тогда не будет подсветки )
Alexander "SonnySlave"
Roman
Хочется чтобы и красненьким, и синхронизированно
Berkus
Egor
Всем хочется. Пока человечество так делать не умеет. По крайней мере, все вопросы вроде "как так сделать на баше" оставались без ответа, емнип
Roman
Ну т.е. проблема точно решаемая. Но похоже простого решения нет
Roman
glibc не поможет. только ядро
Roman
процессы это примитивы ядра
Roman
как и пайпы
Roman
Хотя нет, можно и через glibc
Egor
glibc может помочь, например, в смысле "подменить все вызовы, которые что-то пишут в stdout и подменить там протокол, чтобы оно дописывало номер потока"
Roman
дада
Roman
Ладно, жизнь боль. Пойду лучше поем
Andrei
Andrei
@berkus специально для тебя хочешь видосик сниму?))
Andrei
Andrei
точнее, в stderr, если говорить о Си
Berkus
Berkus
про cerr написано - вывод форсит флаш cout-а
Berkus
Roman
Зачем так сделали?
Roman
Реализация:
// Must downcast from List_node_base to _List_node to get to value.
reference
operator*() const _GLIBCXX_NOEXCEPT
{ return *static_cast<_Node*>(_M_node)->_M_valptr(); }
Roman
почему node в std::list не мог бы хранить значение сразу, без всяких downcasts
Stanislav
Roman
Ну это std:list в gcc
Roman
А, тут всё в комментах написано:
// Supporting structures are split into common and templated
// types; the latter publicly inherits from the former in an
// effort to reduce code duplication. This results in some
// "needless" static_cast'ing later on, but it's all safe
// downcasting.
Igor
map<> m;
for (auto it = m.begin(); it != m.end(); ) {
if (cond)
m.erase(it++);
else {
// long work with it
++it
}
}
возможна ли ситуация, когда m.erase(it++); развернётся в m.erase(it); it += 1 вместо tmp = it; it += 1; m.erase(tmp) ?
Igor
или итератор прямо обязан перейти дальше ДО вызова функции, иначе это баг компилятора?
Egor
Нет, невозможна, всё ок.
Igor
это описанное стандартом поведение, не implementation specific же?
Egor
Да
Egor
только непонятно зачем так делать, если erase возврщает итератор
Egor
Только с C++11, кажется
Igor
Ioann_
Ioann_
Это интересно как :? Или для этого надо курить гцц стд контейнеры ?
🙃
Господа, есть какая-то статья обьясняющая структуру map файлов которые генерятся линкером студии? Не могу нагуглить ничего адекватного
Berkus
Evgenii
Berkus
Andrei
@crackedmind посмотрел, что смог по формату pdf417 в zbar. Проблема в самом распозновании этого формата. Функция отрабатывает, а результат не находит
Alexander "SonnySlave"
Constantine
В новый год с новыми компиляторами
Ага, вот 2017 вижак заметил, что в enable_if_t<false, T> второй параметр нужно инстанцировать и поймал один мой исходник на циклической зависимости шаблонов(
Constantine
После чего он упал на совершенно безобидной конструкции
Andrei
Berkus
Roman
Наблюдаю интересное: прога падает с ассертом из-за data curruption. Но баг сам найти не могу. Ок, включаю addresssanitizer - и всё начинает работать без ошибок
Roman
Выключаю - опять падает в том же месте
Berkus
address sanitizer меняет расположение блоков в памяти
Evgenii
Roman
Попробовал watchpoint, вроде нашёл, сижу разбираюсь в чем дело )
Roman
push_back в один вектор убивает значение в другом ) в общем где-то что-то пошло совсем не так
Олександр
double free?