无捕获列表的lambda通常会被实现为普通函数吗?
Lambda的实现小科普
- 带捕获列表的lambda,其实会被编译器实现成一个包含
operator ()的局部类,这也是它没法转换成普通函数指针的核心原因——毕竟它带着捕获来的外部状态呢。 - 无捕获列表的lambda就不一样了,它可以直接转换成函数指针,用起来和普通函数几乎没差别,看起来就跟普通函数一模一样。而且说实话,我实在想不出有什么理由不把无捕获的lambda直接实现成普通函数,毕竟它不需要携带任何外部状态,完全符合普通函数的特性嘛。
内容的提问来源于stack exchange,提问作者choxsword
相关产品推荐
相关产品推荐

