Was ist der einfachste und übersichtlichste C 11 ScopeGuard?
Problem:
Ein Entwickler zielt darauf ab, ScopeGuard zu vereinfachen, eine Technik zur Handhabung der Ressourcenbeschaffung und -freigabe in C. Sie streben eine Version mit minimalen Codezeilen an und gehen gleichzeitig auf potenzielle Bedenken ein.
Antwort:
Ein prägnant gestalteter ScopeGuard in C 11:
<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>
Hauptfunktionen:
ScopeGuard-Entwicklung:
Der bereitgestellte ScopeGuard wurde im Laufe der Zeit verfeinert und enthält Verbesserungen wie :
Verwendung:
<code class="cpp">scope_guard scope_exit, scope_fail(scope_guard::execution::exception); // Acquire/release resources scope_exit += [](){ cleanup1(); }; scope_fail += [](){ rollback1(); };</code>
Vorteile:
Zusätzliche Hinweise:
Das obige ist der detaillierte Inhalt vonWie können wir den einfachsten und robustesten C 11 ScopeGuard erstellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!