知识卡片
初始化捕获迁移资源
内容
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 的方式来模拟初始化捕获。