知识卡片
泛型lambda要转发
内容
C++14 泛型 lambda 的 auto 形参对应闭包调用运算符的模板形参。auto&& 接收通用引用时,利用 decltype(param) 作为 std::forward 的类型参数,可把调用者原本的值类别继续传给内层函数,避免具名参数导致额外复制。
参考来源
- 位置:《Effective Modern C++》第6章《lambda表达式》,条款三十三:对 auto&& 形参使用 decltype 以 std::forward 它们(源文件:_epub-src/EPUB/text/ch007.xhtml)
- 结论依据:原文将泛型lambda映射到模板调用运算符,并用decltype配合forward保存形参类别。
- 原始内容:对 auto&& 形参使用 decltype 以 std::forward 它们。