使用 C++20 P0052的scope_guard
s(以及许多其他类型的范围保护),请考虑以下典型用例:
auto f = std::fopen(/*...*/);
scope_exit guard_f([&](){ std::fclose(f); });
代码依赖于 lambda 表达式本身(闭包对象的构造)不会抛出。C++ 标准如何保证这一点?
我阅读了标准的章节(第 7.5.5 节 Lambda 表达式),发现没有关于noexcept
lambda 构造函数的说法。
使用 C++20 P0052的scope_guard
s(以及许多其他类型的范围保护),请考虑以下典型用例:
auto f = std::fopen(/*...*/);
scope_exit guard_f([&](){ std::fclose(f); });
代码依赖于 lambda 表达式本身(闭包对象的构造)不会抛出。C++ 标准如何保证这一点?
我阅读了标准的章节(第 7.5.5 节 Lambda 表达式),发现没有关于noexcept
lambda 构造函数的说法。