가장 간단하고 깔끔한 C 11 ScopeGuard는 무엇인가요?
문제:
개발자 C에서 리소스 획득 및 해제를 처리하는 데 사용되는 기술인 ScopeGuard를 단순화하려고 합니다. 그들은 잠재적인 문제를 해결하면서 최소한의 코드 줄이 있는 버전을 목표로 하고 있습니다.
답변:
간결하게 디자인된 C 11의 ScopeGuard:
<code class="cpp">class scope_guard { public: template<class Callable> scope_guard(Callable &&undo_func) try : f(std::forward<Callable>(undo_func)) { } catch(...) { undo_func(); throw; } // ... (additional implementation omitted for brevity) };</code>
주요 기능:
ScopeGuard 진화:
제공된 ScopeGuard는 시간이 지남에 따라 다음과 같은 개선 사항을 통합하여 개선되었습니다. :
사용:
<code class="cpp">scope_guard scope_exit, scope_fail(scope_guard::execution::exception); // Acquire/release resources scope_exit += [](){ cleanup1(); }; scope_fail += [](){ rollback1(); };</code>
이점:
추가 참고 사항:
위 내용은 가장 간단하고 가장 견고한 C 11 ScopeGuard를 어떻게 만들 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!