范围保护非常 C ++ -way成语。它很好地与异常交互并符合RAII。 C ++ 没有范围保护的原生支持。我是说干净的语法。目前我只能编写一个辅助类:c-tor将lambda存储为data-member,d-tor调用lambda(在范围出口或异常抛出时)。
C ++ 目前是否有任何关于范围保护的方便提法?
我的意思是int * i = new int; ~[&i] { if (i) { delete i; i = nullptr; } }; ...
或者甚至是(默认情况下捕获为 ref )~{ /* statments */; }
。当lambda语法只是具有struct
的{{1}}的语法糖时,对于"内联" - 匿名operator ()
的构造函数,可能存在lambda-similar-syntax。