summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJędrzej Nowacki <jedrzej.nowacki@qt.io>2019-03-12 09:22:15 +0100
committerJędrzej Nowacki <jedrzej.nowacki@qt.io>2019-04-02 12:43:14 +0000
commitb91e6f6f40864d54903d707d7f19a9732188b670 (patch)
tree89386ebd77aaf01158f79c00d3b957edf8aad575
parentb5f76eeb5310211f128ff312223f641711198af5 (diff)
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>
-rw-r--r--src/corelib/tools/qscopeguard.h11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/corelib/tools/qscopeguard.h b/src/corelib/tools/qscopeguard.h
index 31100fcabb..0f61996eb6 100644
--- a/src/corelib/tools/qscopeguard.h
+++ b/src/corelib/tools/qscopeguard.h
@@ -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));