使用c++ lambda表达式,可以有哪些优美操作?

发布时间:
2023-08-24 12:30
阅读量:
15

我常用到lambda的地方是scope guard。

公司的代码很早就有了,那会lambda还没有,公司的前辈实现的scope guard,一共有很多个,分别用于接收0个参数,1个参数,2个参数,3个参数等等,还有两个版本,一个是有对象的版本,一个不是对象的版本。

比如

class ScopeGuard0;

class ScopeGuard1;

....

现在借助lambda,我们就可以只用一个版本——比如只用ScopeGuard0,然后接受一个lambda。

因为公司的版本跟lambda 不兼容,所以我自己写了一个版本,然后并入了公司的基础库里面,被更多的人使用。

值得一提的是,lamba不仅提高了代码的阅读星,而且也防止了一部分bug。

曾经就因为公司老版本的lambda被误用,导致了crash,很多人还不明白为什么crash。

关于这个故事,我之前写在了CrackingOysters:C++临时变量的生命周期,纯右值实体化

END