170 похожих чатов

Здравствуйте! я тут смотрю код в движок Unreal Engine и

вижу следующее, подскажите пожалуйста почему это работает:

TSharedPtr<TPromise<EStatusCode>> ReturnPromise = MakeShared<TPromise<EStatusCode>>();
Request->OnProcessRequestComplete().BindLambda([ReturnPromise](FHttpRequestPtr Req, FHttpResponsePtr HttpResponse, bool bSucceeded) {
ReturnPromise->EmplaceValue((EStatusCode)HttpResponse->GetResponseCode());
});
Request->ProcessRequest();
return ReturnPromise->GetFuture();

Скорее всего я просто не понимаю правильно логику, но разве ReturnPromise не уничтожиться до того как OnProcessRequestComplete лямбда будет вызвана (в случае если лямбда не успеет вызваться до того как область видимости, т.е. скоуп, где был создан ReturnPromise закончится)?

4 ответов

7 просмотров

На то там и shared_ptr. Он передаётся в capture_list лямбды по значению. И будет жить

Tasumi- Автор вопроса
Eyed Shovel
На то там и shared_ptr. Он передаётся в capture_li...

Но ведь лямбда еще не вызвана (и не известна будет ли вызвана вообще). Получается что shared ptr будет жить вечно в том случае, если предположим что лямбда никогда не будет вызвана? Извиняюсь если это очень глупый вопрос, я не понимаю просто, правда))

Tasumi
Но ведь лямбда еще не вызвана (и не известна будет...

Лямбда же где-то будет храниться, верно?

Tasumi- Автор вопроса

Похожие вопросы

Обсуждают сегодня

Я тут за тем, чтобы задать вопрос, так как не знаю ассемблер, учу с/с++. Короче, насколько дорога операция перехода в функцию при ее вызове? Дело в том, что в с++ есть макросы...
Максим Рябцев
12
Anyone here suffers from unexplained aural migraines, who would be up for talking for a bit? Doesn't *have* to be aural, but I am not asking about headaches, I mean actual mi...
Martin Rys
55
А какие чаты вообще в ходу? Auto aim? И что еше
do you think you're better off alone? А
13
hello friends. Do you know how can I learn getx? I have a software project that I should deliver it up to 5 weeks later and I need to learn firebase too. I will be thankfull
AmirHossein Razavi
15
Привет, нужен совет старших товарищей. Есть глобальная переменная var DefaultDataFolder:string; инициализируем DefaultDataFolder:='a:\_OUT\'; есть примитивная процедур...
Max Otto
14
Доброе время суток! у меня тут иноды закончились. и понял почему по сути кстит, я периодически очищаю постгрес и сентри контайнер: postgres=# DELETE FROM nodestore_node WHER...
Юсиф Насиров
9
Какой дос блять?
007
9
Вопрос. Теоретический. Есть список команд. Команды отправляю в обработку некой функции, по очереди. Разные команды могут давать разные результаты после обработки. В зависимос...
Serjone
7
lazarus-3.2.0/gtk, linux патч "имя проекта по умолчанию project1 -> prj" день добрый не нравится "именя проекта по умолчанию" (project1), к.раз приходится переименовывать (н...
livontiy
5
Коллеги, а в чём сейчас хорошо писать на перле, в смысле ide? Пробовал в идее с плагином, подсветка есть, даже какие-то предупреждения есть, но рефакторинга считай нет. Перене...
Дмитрий Петров
9
Карта сайта