summaryrefslogtreecommitdiffstats
path: root/tests/auto/corelib/tools/containerapisymmetry
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@qt.io>2023-12-07 15:53:48 +0100
committerMarc Mutz <marc.mutz@qt.io>2023-12-07 23:55:08 +0100
commit0a86a77e5f145f8aa4b79b645030a79f896bdb66 (patch)
treedc179f93c20a8d1cb816149ce33e236c2106e26e /tests/auto/corelib/tools/containerapisymmetry
parent9dd19532187bd6a5465e6c98a554d24dad1d06d0 (diff)
tst_containerapisymmetry: remove the extra push_back
... and make sure it cannot happen again by using Extract Method to let the compiler do the counting between the resize and the sequence-of-push_back alternatives, because this author clearly can't. Amends 3c0fdd7341ed4bff9b5f041e9f4646265d142303. Pick-to: 6.6 6.5 Change-Id: If18f30d60f556e5e668876a38423f3e519fb79b0 Reviewed-by: MÃ¥rten Nordheim <marten.nordheim@qt.io>
Diffstat (limited to 'tests/auto/corelib/tools/containerapisymmetry')
-rw-r--r--tests/auto/corelib/tools/containerapisymmetry/tst_containerapisymmetry.cpp34
1 files changed, 17 insertions, 17 deletions
diff --git a/tests/auto/corelib/tools/containerapisymmetry/tst_containerapisymmetry.cpp b/tests/auto/corelib/tools/containerapisymmetry/tst_containerapisymmetry.cpp
index 05d8dac126..b069dd4618 100644
--- a/tests/auto/corelib/tools/containerapisymmetry/tst_containerapisymmetry.cpp
+++ b/tests/auto/corelib/tools/containerapisymmetry/tst_containerapisymmetry.cpp
@@ -781,10 +781,25 @@ void tst_ContainerApiSymmetry::resize_impl() const
}
template <typename T>
+[[maybe_unused]]
constexpr bool is_vector_v = false;
template <typename...Args>
constexpr bool is_vector_v<std::vector<Args...>> = true;
+template <typename Container, typename Value>
+void wrap_resize(Container &c, typename Container::size_type n, const Value &v)
+{
+#ifdef __GLIBCXX__ // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83981
+ if constexpr (is_vector_v<Container>) {
+ while (c.size() < n)
+ c.push_back(v);
+ } else
+#endif
+ {
+ c.resize(n, v);
+ }
+}
+
template <typename Container>
void tst_ContainerApiSymmetry::copesWithValueTypesWithConstMembers_impl()
{
@@ -815,24 +830,9 @@ void tst_ContainerApiSymmetry::copesWithValueTypesWithConstMembers_impl()
// make sure they work
c.reserve(S(5));
c.shrink_to_fit();
-#ifdef __GLIBCXX__ // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83981
- if constexpr (is_vector_v<Container>) {
- c.push_back(V(42));
- } else
-#endif
- {
- c.resize(1, V(42));
- }
+ wrap_resize(c, 1, V(42));
QCOMPARE(c[0], V(42));
-#ifdef __GLIBCXX__ // https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83981
- if constexpr (is_vector_v<Container>) {
- c.push_back(V(48));
- c.push_back(V(48));
- } else
-#endif
- {
- c.resize(2, V(48));
- }
+ wrap_resize(c, 2, V(48));
QCOMPARE(c[0], V(42));
QCOMPARE(c[1], V(48));
c.clear();