知识卡片

初始化捕获迁移资源

普通读书笔记卡 · 1432

内容

C++14 初始化捕获可以直接初始化闭包成员,把 unique_ptr 等只移对象搬入闭包,而不依赖普通按值复制捕获。C++11 可用手写闭包类或 bind 模拟。资源进入闭包后,回调的可复制性也会受成员能力约束。

参考来源

- 位置:《Effective Modern C++》第6章《lambda表达式》,条款三十二:使用初始化捕获来移动对象到闭包中(源文件:_epub-src/EPUB/text/ch007.xhtml) - 结论依据:原文以只移对象说明普通捕获限制,给出C++14初始化捕获及C++11模拟方案。 - 原始内容:使用C++14的初始化捕获将对象移动到闭包中。 在C++11中,通过手写类或 std::bind 的方式来模拟初始化捕获。