История изменений
Исправление
dave,
(текущая версия)
:
В Си++ замыкания и std::function - разные вещи. Как я понял (а могу ошибаться), замыкания создаются на стеке. А вот при боксинге превращаются в std::function, для которых обычно действует жесткое ограничение, скажем, не более 32 байт на стеке. Если не умещаются, то «добро пожаловать в кучу».
Понятное дело, что это специфика Си++. В том же Rust это, скорее всего, сделано немного по-другому.
Замыкания там тоже создаются на стеке, но вот на счет FnOnce/Fn/FnMut/FnBox я сильно не уверен, что они при боксинге сразу не помещаются в кучу (это будет некий аналог std::function).
Ведь тебя интересуют языки без GC
Исходная версия
dave,
:
В Си++ замыкания и лямбды - разные вещи. Как я понял (а могу ошибаться), замыкания создаются на стеке. А вот лямбды превращаются в std::function, для которых обычно действует жесткое ограничение, скажем, не более 32 байт на стеке. Если не умещаются, то «добро пожаловать в кучу».
Понятное дело, что это специфика Си++. В том же Rust это, скорее всего, сделано немного по-другому.
Замыкания там тоже создаются на стеке, но вот на счет FnOnce/Fn/FnMut/FnBox я сильно не уверен, что они при боксинге сразу не помещаются в кучу (это будет некий аналог std::function).
Ведь тебя интересуют языки без GC