使用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