pavel
Господа, есть код: std::set< T > zuzu; it = zuzu.end(); ++it; // bebebe ++it; ++it; Будет ли после всего этого (it == zuzu.end()) или будет UB уже на bebebe?
Samat
ub
Anonymous
Уже на бебебе, у тебя итератор после-после конца уже.
pavel
Ок, т.е. std::advance() может тебе выстрелить в ногу и надо параллельно проверять сколько осталось... Это печаль.
Oleg
По стандарту - там обычный инкремент
Anonymous
Добрый день, у меня глупый вопрос, вообще не шарю в с++, но у нас все задания простые Так вот, написали тело программы, как в лабе, класс, но при запуске программы выдаёт, что файл не найден, как быть?
Berkus
можно, бот забанил за флуд
Berkus
5 и больше сообщений подряд
🦥Alex Fails
да
Berkus
так, в ЭТОМ чяте - поднимите руку кто сидит на WinXP
Vitality
Ещё используем
Aleksandr
так, в ЭТОМ чяте - поднимите руку кто сидит на WinXP
Секунду назад развернул виртуалку с XP
Vitality
Домашняя машина на Фен2 и Mac Mini 2010 с WinXP
🦥Alex Fails
так, в ЭТОМ чяте - поднимите руку кто сидит на WinXP ✋️ – 21 👍👍👍👍👍👍👍 100% 👥 21 people voted so far.
Berkus
о спс Алекс
🦥Alex Fails
Ещё используем
жмякай кнопк
Alexander
Всем привет. Есть ли в этом чатике люди, которым приходилось сталкиваться с алгоритмом хаутауэра? (Hightower's Algorithm) Хотел уточнить пару вещей в реализации
Maxim
У клиентов используется
Dolphin
Профи, прокомментите событие, курю второй день... GCC 5.4, -Os
Dolphin
Dolphin
Другой вызов:
Dolphin
Dolphin
почему постинкремент превратился в прединкремент, и почему разный код при одной оптимизации, например
Dolphin
И если я не прав, прошу наставления на путь :)
Berkus
Это мипс какой-то?
Pavel
в одном случае он думает что аргумент signed?
Dolphin
AVRка
Dolphin
uint16_t c2=0;
Dolphin
в одном случае он думает что аргумент signed?
нет сложения - заменяет вычитанием
Pavel
это последствие
Dolphin
какое последствие?
Dolphin
это - (- 1) = +1
Berkus
А в каких регистрах передаются аргументы?
Dolphin
r25:r24
Pavel
загадочная душа оптимизатора. если работает то лично я не вижу причин удивлятся.
Berkus
Тогда я не вижу там преинкремнта, пост
Berkus
Пушо r24 перезаписыааетсч перед вызовом оригинальным значением
Dolphin
секунду... вот запись вызова: UART_Send(w_2_a(c2++));
Dolphin
1. компилятор должен вызвать внутреннюю функцию, с c2
Berkus
Да, это я прочитал
Dolphin
2. увеличить c2
Dolphin
3. вызвать внешнюю
Dolphin
или 2. вызвать внешнюю 3. увеличить с2
Dolphin
так?
Berkus
Ну он увеличил копию с2 а потом вызвал все со старым значением
Berkus
Надо спеку читать, я не знаю эту систему команд
Dolphin
👆
Dolphin
он преинкрементил оригинал и начал вызовы
Dolphin
баг или фича? :)
Dolphin
так работает правильно: UART_Send(w_2_a(c2)); UART_Send(b_2_a(c2)); c2++;
Pavel
ну надо саму функцию смотреть в каждом случае, может меняются регистры через которые передаются аргументы и там это не оригинал?
Pavel
зависит от того сколько раз функцию вызвали
Pavel
в одном такая оптимизация в другом такая
Berkus
баг или фича? :)
Похоже на баг
Berkus
Что за компиль?
Pavel
или работает то всётаки не правильно?
Dolphin
так правильно
Pavel
ну вполне может и баг. я бы с такими вопросами сходил в мейлинг лист. у них там наверняка 3.5 программиста на весь авр компилятор )
Berkus
То же хотел предложить, проверь баглист
Dolphin
спасибо!
Vsevolod
подождите, а с чего вы взяли, что в f(g(x++)) f должен вызваться с инкрементированным x?
Vsevolod
где тут sequence point?
Vsevolod
судя по стандарту, это определено только в с++, но не в c
Vsevolod
At a function return, after the return value is copied into the calling context. (This sequence point is only specified in the C++ standard; it is present only implicitly in C.)
JBáruch
http://cppconf.ru/workshops/pavel-filonov
JBáruch
все же видели, да?
Berkus
f() вызывается с тем, что вернет g(), нет?
нет, он про то что к моменту вызова f() x должен инкрементироваться только в с++, а в с не обязан
Berkus
f(g(x)) ++x; валидная интерпретация в си
Berkus
v=g(x++) f(v) в с++