user avatar
QGeometryFactory: don't make op== virtual
Marc Mutz authored
That's too clever, and it backfires with compilation errors in C++20
mode:

  qt3d/tests/auto/render/meshfunctors/tst_meshfunctors.cpp:129:29: error: ambiguous overload for ‘operator==’ (operand types are ‘MeshFunctorA’ and ‘MeshFunctorB’)
    129 |         QVERIFY(!(*functorA == *functorB));
        |                   ~~~~~~~~~ ^~ ~~~~~~~~~
        |                   |            |
        |                   MeshFunctorA MeshFunctorB
  qt3d/tests/auto/render/meshfunctors/tst_meshfunctors.cpp:72:10: note: candidate: ‘virtual bool MeshFunctorB::operator==(const Qt3DCore::QGeometryFactory&) const’ (reversed)
     72 |     bool operator ==(const Qt3DCore::QGeometryFactory &other) const override
        |          ^~~~~~~~
  qt3d/tests/auto/render/meshfunctors/tst_meshfunctors.cpp:50:10: note: candidate: ‘virtual bool MeshFunctorA::operator==(const Qt3DCore::QGeometryFactory&) const’
     50 |     bool operator ==(const Qt3DCore::QGeometryFactory &other) const override
        |          ^~~~~~~~

Fix by providing a symmetric operator== for QGeometryFactory that
delegates to a virtual equals() method.

Pick-to: 6.2 5.15
Change-Id: I23d29ad1b16075629132f2b4757c5810d5615a36
Reviewed-by: default avatarEdward Welbourne <edward.welbourne@qt.io>
Reviewed-by: default avatarPaul Lemire <paul.lemire@kdab.com>
ec291f99
Name Last commit Last update