Issue a warning about unused result of qScopeGuard and QScopeGuard

If the result is unassigned then resulting QScopeGuard is destroyed
immediately, we can warn about it, as it is definitely a bug.

Change-Id: I627b05cecb3d0e62dbc24373e621f2be36d9b324
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Mårten Nordheim <marten.nordheim@qt.io>
This commit is contained in:
Jędrzej Nowacki 2019-03-12 09:22:15 +01:00
parent b5f76eeb53
commit b91e6f6f40

View File

@ -50,7 +50,12 @@ template <typename F> class QScopeGuard;
template <typename F> QScopeGuard<F> qScopeGuard(F f);
template <typename F>
class QScopeGuard
class
#ifndef __INTEL_COMPILER
// error #2621: attribute "__warn_unused_result__" does not apply here
Q_REQUIRED_RESULT
#endif
QScopeGuard
{
public:
QScopeGuard(QScopeGuard &&other) Q_DECL_NOEXCEPT
@ -86,6 +91,10 @@ private:
template <typename F>
#ifndef __INTEL_COMPILER
// Causes "error #3058: GNU attributes on a template redeclaration have no effect"
Q_REQUIRED_RESULT
#endif
QScopeGuard<F> qScopeGuard(F f)
{
return QScopeGuard<F>(std::move(f));