Forwarded from Библиотека задач по C++ | тесты, код, задания
Forwarded from Библиотека задач по C++ | тесты, код, задания
Что выведет этот код?
Anonymous Quiz
6%
Ошибка компиляции
10%
42
6%
Неопределённое поведение
78%
7
1%
0
😁6
Корутины в C++20 нарушают базовую интуицию о scope: локальные переменные могут пережить
} функции. Разбираем, как это реализовано.Обычная функция: локальные переменные в стеке, уничтожаются при
return. Корутина может быть приостановлена (co_await) и возобновлена позже — стека уже нет. Куда деваются локальные переменные? Task example() {
int x = 10; // где живёт x после co_await?
co_await someAwaitable();
std::cout << x; // x должен быть доступен!
}Компилятор переписывает корутину в конечный автомат. Все локальные переменные, которые живут через точку приостановки, переносятся в
coroutine frame — объект в куче:// Псевдокод того, что генерирует компилятор:
struct __example_frame {
int x; // из стека → в heap
int __state; // текущая точка возобновления
promise_type __promise;
};
Видимость имён не меняется —
x виден только внутри функции. Меняется место хранения: не стек, а heap. Деструкторы по-прежнему вызываются при выходе из scope — но «выход» теперь может произойти через co_return или уничтожение корутины.📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#константная_правильность
Please open Telegram to view this post
VIEW IN TELEGRAM
👍8🤔1
😎 Топ-вакансий для C++ разработчиков за неделю
С разработчик — Удалёнка
Middle / Senior Разработчик C/C++ — Удалёнка/гибрид (Новосибирск)
Senior C Developer — от 350 000 ₽ Удалёнка
✍️ Еще больше топовых вакансий — в нашем канале C++ jobs
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#буст
С разработчик — Удалёнка
Middle / Senior Разработчик C/C++ — Удалёнка/гибрид (Новосибирск)
Senior C Developer — от 350 000 ₽ Удалёнка
✍️ Еще больше топовых вакансий — в нашем канале C++ jobs
📍Навигация: Вакансии • Задачи • Собесы
Библиотека C/C++ разработчика
#буст
👍1😁1