summaryrefslogtreecommitdiffstats
path: root/src/testlib/qtestcase.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/testlib/qtestcase.h')
-rw-r--r--src/testlib/qtestcase.h18
1 files changed, 10 insertions, 8 deletions
diff --git a/src/testlib/qtestcase.h b/src/testlib/qtestcase.h
index 75a51992d28..6e7be04ba0a 100644
--- a/src/testlib/qtestcase.h
+++ b/src/testlib/qtestcase.h
@@ -621,19 +621,17 @@ namespace QTest
inline bool qCompare(const T1 &t1, const T2 &t2, const char *actual, const char *expected,
const char *file, int line)
{
- using D1 = std::decay_t<T1>;
- using D2 = std::decay_t<T2>;
using Internal::genericToString;
if constexpr (QtPrivate::is_standard_or_extended_integer_type_v<T1>
&& QtPrivate::is_standard_or_extended_integer_type_v<T2>) {
return compare_helper(q20::cmp_equal(t1, t2), "Compared values are not the same",
std::addressof(t1), std::addressof(t2),
- genericToString<D1>, genericToString<D2>,
+ genericToString<T1>, genericToString<T2>,
actual, expected, file, line);
} else {
return compare_helper(t1 == t2, "Compared values are not the same",
std::addressof(t1), std::addressof(t2),
- genericToString<D1>, genericToString<D2>,
+ genericToString<T1>, genericToString<T2>,
actual, expected, file, line);
}
}
@@ -745,12 +743,16 @@ namespace QTest
using Internal::genericToString;
using Comparator = Internal::Compare<op>;
+ // force decaying of T1 and T2
+ auto doReport = [&](bool result, const D1 &lhs_, const D2 &rhs_) {
+ return reportResult(result, std::addressof(lhs_), std::addressof(rhs_),
+ genericToString<D1>, genericToString<D2>,
+ lhsExpr, rhsExpr, op, file, line);
+ };
+
/* assumes that op does not actually move from lhs and rhs */
bool result = Comparator::compare(std::forward<T1>(lhs), std::forward<T2>(rhs));
- return reportResult(result, std::addressof(lhs), std::addressof(rhs),
- genericToString<D1>, genericToString<D2>,
- lhsExpr, rhsExpr, op, file, line);
-
+ return doReport(result, std::forward<T1>(lhs), std::forward<T2>(rhs));
}
}