Provides a scope guard for calling a function at the end of a scope. More...
Header: | #include <QScopeGuard> |
CMake: | find_package(Qt6 REQUIRED COMPONENTS Core) target_link_libraries(mytarget PRIVATE Qt6::Core) |
qmake: | QT += core |
Since: | Qt 5.12 |
QScopeGuard(const F &f) | |
QScopeGuard(F &&f) | |
void | dismiss() |
QScopeGuard<typename std::decay<F>::type> | qScopeGuard(F &&f) |
QScopeGuard<F> is a class of which the sole purpose is to run the function f in its destructor. This is useful for guaranteeing your cleanup code is executed, whether the function is exited normally, exited early by a return statement, or exited by an exception.
Note: Exceptions are not supported. The callable shouldn't throw when executed, copied or moved.
See also QScopedValueRollback.
[since 5.15]
QScopeGuard::QScopeGuard(F &&f)[since 5.15]
QScopeGuard::QScopeGuard(const F &f)Create a scope guard that will execute f at the end of the scope.
If F is a lambda, its type cannot be written. In that case you need to either rely on class template argument deduction (C++17 feature) and leave the template parameter out completely or use the helper function qScopeGuard() instead of this constructor.
This function was introduced in Qt 5.15.
Disarms the scope guard, so that the function F will not be called at the end of the scope.
The qScopeGuard function can be used to call a function at the end of the scope.
Create a scope guard that will execute f at the end of the scope.
This helper function is provided so that you can easily construct a QScopeGuard without having to name the template parameter for the type of the callable. If F is a lambda then you cannot write its type and relying on this helper or class template argument deduction is necessary.
Example usage is as follows:
void myComplexCodeWithMultipleReturnPoints(int v) { // The lambda will be executed right before your function returns auto cleanup = qScopeGuard([] { code you want executed goes HERE; }); if (v == -1) return; int v2 = code_that_might_throw_exceptions(); if (v2 == -1) return; (...) }
As part of the free Business evaluation, we offer a free welcome call for companies, to talk about your requirements, and how the Felgo SDK & Services can help you. Just sign up and schedule your call.
Sign up now to start your free Business evaluation: