Size: a a a

2021 March 24

И

Игорь in dlang.ru
а, сорри это ж сишный
источник

DH

Dark Hole in dlang.ru
Макс Воробьев
@nogc
auto writer(int v) {
   return () {
       printf("%d\n", v);
   };
}
тут от v нужно только значение, а в nogc  уже не работает
От значения же ничего бы не поменялось бы
источник

МВ

Макс Воробьев... in dlang.ru
Константин Пунш
А аллоцирование запрещено
вот тут и проблема. в ++ лямбда - это что-то на подобии структуры с перегруженным (), где все захваченные значения хранятся в полях этой структуры
источник

КП

Константин Пунш... in dlang.ru
Макс Воробьев
вот тут и проблема. в ++ лямбда - это что-то на подобии структуры с перегруженным (), где все захваченные значения хранятся в полях этой структуры
Ну они же тоже аллоцировануются в оперативку
источник

КП

Константин Пунш... in dlang.ru
Или у всех делегатов там разный размер?
источник

И

Игорь in dlang.ru
могут и не аллоцироваться наверное а копироваться как структура
источник

КП

Константин Пунш... in dlang.ru
Константин Пунш
Или у всех делегатов там разный размер?
Тогда вся гибкость от них теряется
источник

МВ

Макс Воробьев... in dlang.ru
Константин Пунш
Или у всех делегатов там разный размер?
#include <iostream>

auto writer(int num) {
   return [num](){
       std::cout << num << std::endl;
   };
}

int main() {
   writer(5)();
   return 0;
}
источник

КП

Константин Пунш... in dlang.ru
Макс Воробьев
#include <iostream>

auto writer(int num) {
   return [num](){
       std::cout << num << std::endl;
   };
}

int main() {
   writer(5)();
   return 0;
}
Как делегаты у них в памяти устроены
источник

КП

Константин Пунш... in dlang.ru
Указатель на контекст, который в куче
источник

КП

Константин Пунш... in dlang.ru
Или как структура, и каждая с разным размером
источник

МВ

Макс Воробьев... in dlang.ru
Константин Пунш
Указатель на контекст, который в куче
контекст на стеке
источник

МВ

Макс Воробьев... in dlang.ru
Константин Пунш
Или как структура, и каждая с разным размером
+
источник

И

Игорь in dlang.ru
тоже не сахар
источник

МВ

Макс Воробьев... in dlang.ru
и есть 2 варианта передать такую лямбду в параметры: 1) через шаблонный аргумент. 2) через std::function
источник

DH

Dark Hole in dlang.ru
Макс Воробьев
и есть 2 варианта передать такую лямбду в параметры: 1) через шаблонный аргумент. 2) через std::function
8)
источник

DH

Dark Hole in dlang.ru
А вот и проблемы вылезли
источник

КП

Константин Пунш... in dlang.ru
Константин Пунш
Если что-то типо такого

auto func()
{
int x;
return () => x++;
}
Ну елси вдруг язвк откажется от GC это вообще не проблема
источник

КП

Константин Пунш... in dlang.ru
Будет как raii наверное
источник

МВ

Макс Воробьев... in dlang.ru
у swift тоже подобная фигня есть. нужна например, что-бы захватывать объект в контекст по weak ref
источник