>>236629
Ну, телепаты в отпуске и никто не знает, что ты там навелосипедил. Но в любом случае, компилятор не может нарушить порядок изменения стейта программы в абстрактной машине, описанной в спецификации языка. Если только ты нигде больше не используешь результат getShape() и он не решил, что раз так, то и без разницы, когда его вызывать.
>По сравнению с жавой кресты просто какое-то наркоманство.
В жабе тоже есть такая хуйня, когда у каждого потока есть своя копия поля и они не синхронизированы. Собственно именно поэтому там есть всякие AtomicBoolean и прочие Atomic примитивы, изменения которых гарантировано синхронизируются между потоками.
Т.е. тебе надо: первое, проанализировать, что происходит со стейтом программы; второе, убедиться, что изменения полей синхронизированы между потоками.
З.Ы.: Лямбда — это анонимная функция, т.е. подпрограмма, передающаяся по ссылке. Такое есть не только в плюсах и существует очень давно.
З.Ы.Ы.: QTimer создаёт отдельный поток для выполнения обработчика, почему я и вспомнил про конкуренси.