/**************************************************************************** ** ** Copyright (C) 2018 Klarälvdalens Datakonsult AB, a KDAB Group company, info@kdab.com, author Sérgio Martins ** Copyright (C) 2019 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the documentation of the Qt Toolkit. ** ** $QT_BEGIN_LICENSE:FDL$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and The Qt Company. For licensing terms ** and conditions see https://www.qt.io/terms-conditions. For further ** information use the contact form at https://www.qt.io/contact-us. ** ** GNU Free Documentation License Usage ** Alternatively, this file may be used under the terms of the GNU Free ** Documentation License version 1.3 as published by the Free Software ** Foundation and appearing in the file included in the packaging of ** this file. Please review the following information to ensure ** the GNU Free Documentation License version 1.3 requirements ** will be met: https://www.gnu.org/licenses/fdl-1.3.html. ** $QT_END_LICENSE$ ** ****************************************************************************/ #include "qscopeguard.h" QT_BEGIN_NAMESPACE /*! \class QScopeGuard \since 5.12 \inmodule QtCore \brief Provides a scope guard for calling a function at the end of a scope. QScopeGuard is a class of which the sole purpose is to run the function \a 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. \sa QScopedValueRollback */ /*! \fn template QScopeGuard::QScopeGuard(F &&f) \fn template QScopeGuard::QScopeGuard(const F &f) Create a scope guard that will execute \a f at the end of the scope. If \e 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. \since 5.15 */ /*! \fn template void QScopeGuard::dismiss() Disarms the scope guard, so that the function \e F will not be called at the end of the scope. */ /*! \fn [qScopeGuard] template QScopeGuard::type> qScopeGuard(F &&f) \inmodule QtCore \relates QScopeGuard \brief The qScopeGuard function can be used to call a function at the end of the scope. \ingroup misc Create a scope guard that will execute \a 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 \e 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: \snippet code/src_corelib_tools_qscopeguard.cpp 0 */ QT_END_NAMESPACE