草庐IT

ScopeGuard

全部标签

c++ - 通过 const 引用延长临时生命周期

C++我正在尝试了解const引用如何延长临时对象的生命周期。我正在运行oneoftheanswerstoWhatarethedifferencesbetweenpointervariableandreferencevariableinC++?中的代码片段并在VC11和g++4.8之间得到了冲突的结果。我在这里扩展了代码段:#includestructscope_test{~scope_test(){printf("scope_testdone!\n");}};intmain(){constscope_test&test=scope_test();printf("inscope\n")

c++ - 使用范围保护时如何避免警告?

我正在使用follyscopeguard,它正在工作,但它会生成一条警告,指出该变量未被使用:warning:unusedvariable‘g’[-Wunused-variable]代码:folly::ScopeGuardg=folly::makeGuard([&]{close(sock);});如何避免这样的警告? 最佳答案 您可以将变量标记为未使用:folly::ScopeGuardg[[gnu::unused]]=folly::makeGuard([&]{close(sock);});或者将其转换为void:folly::Sc

c++ - C++ 中的 ScopeGuard 是什么?

我的印象是它是第三方编写的库中包含的C++类。我试着在谷歌上搜索,我发现了一篇帖子说使用它是个好主意。但是,它未能准确描述它是什么以及我如何将它合并到我的代码中。谢谢。 最佳答案 ScopeGuard曾经是范围保护的特定实现byPetruMargineanandAndreiAlexandrescu.这个想法是让保护对象的析构函数在作用域的末尾调用用户指定的清理操作(读取:block),除非作用域保护被解散。Marginean提出了一个巧妙的想法,即根据对const的引用的生命周期扩展,为C++03声明一个范围保护对象。今天“作用域守

c++ - 为什么 Alexandrescu 不能使用 std::uncaught_exception() 在 ScopeGuard11 中实现 SCOPE_FAIL?

这个问题在这里已经有了答案:Scope(failure)inC++11?(2个回答)关闭9年前。毫无疑问,很多人都熟悉Alexandrescus先生的ScopeGuard模板(现在是Loki的一部分)和这里介绍的新版本ScopeGuard11:http://channel9.msdn.com/Shows/Going+Deep/C-and-Beyond-2012-Andrei-Alexandrescu-Systematic-Error-Handling-in-C这里有来源:https://gist.github.com/KindDragon/4650442在2012年及以后的c++演讲中

c++ - 最简单最整洁的c++11 ScopeGuard

我正在尝试写一个简单的ScopeGuardbasedonAlexandrescuconcepts但使用c++11习语。namespaceRAII{templateclassScopeGuard{mutableboolcommitted;LambdarollbackLambda;public:ScopeGuard(constLambda&_l):committed(false),rollbackLambda(_l){}templateScopeGuard(constAdquireLambda&_al,constLambda&_l):committed(false),rollbackLam

c++ - ScopeGuard 的使用真的会带来更好的代码吗?

我遇到了thisarticle多年前由AndreiAlexandrescu和PetruMarginean编写,其中介绍并讨论了一个名为ScopeGuard的实用程序类,用于编写异常安全代码。我想知道使用这些对象进行编码是否真的会导致更好的代码,或者它是否会混淆错误处理,因为也许守卫的回调会更好地呈现在catchblock中?有没有人有在实际生产代码中使用这些的经验? 最佳答案 它肯定会改进您的代码。您暂时提出的主张,即它是晦涩难懂的,并且代码可以从catchblock中获得值(value),这在C++中根本不正确,因为RAII是一个

c++ - ScopeGuard 的使用真的会带来更好的代码吗?

我遇到了thisarticle多年前由AndreiAlexandrescu和PetruMarginean编写,其中介绍并讨论了一个名为ScopeGuard的实用程序类,用于编写异常安全代码。我想知道使用这些对象进行编码是否真的会导致更好的代码,或者它是否会混淆错误处理,因为也许守卫的回调会更好地呈现在catchblock中?有没有人有在实际生产代码中使用这些的经验? 最佳答案 它肯定会改进您的代码。您暂时提出的主张,即它是晦涩难懂的,并且代码可以从catchblock中获得值(value),这在C++中根本不正确,因为RAII是一个