diff options
author | Fabian Kosmale <fabian.kosmale@qt.io> | 2020-07-12 11:17:21 +0200 |
---|---|---|
committer | Fabian Kosmale <fabian.kosmale@qt.io> | 2020-07-14 17:06:47 +0200 |
commit | ca54b741d6edda24773137aacee229db31dd3585 (patch) | |
tree | 11625d145a4350e620e0572972ab94710e2d3ef3 /tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp | |
parent | 8cdaeb26552313e7b9d67fa062a3d9ff597c2e06 (diff) |
qtypeinfo: Improve container check
Smart pointers like QSharedPointer<T> do have a value_type, but their
equality does not depend on T being comparable. Therefore, instead of
simply checking for T::value_type, test for a few other container
requirements.
This also required to add an additional check for std::optional, as that
one has an unconstrained operator== on MSVC.
Change-Id: Iefd048f7aa360f4713ecd79f80acd7dae72ee18c
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Diffstat (limited to 'tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp')
-rw-r--r-- | tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp index 35d3f433ec..3d729eae67 100644 --- a/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp +++ b/tests/auto/corelib/kernel/qmetatype/tst_qmetatype.cpp @@ -101,6 +101,11 @@ static_assert(!QTypeTraits::has_operator_less_than_v<QHash<int, QString>>); static_assert(!QTypeTraits::has_operator_equal_v<QHash<int, NoOperators>>); static_assert(!QTypeTraits::has_operator_less_than_v<QHash<int, NoOperators>>); +// QSharedPointer +static_assert(QTypeTraits::has_operator_equal_v<QSharedPointer<QString>>); +// smart pointer equality doesn't depend on T +static_assert(QTypeTraits::has_operator_equal_v<QSharedPointer<NoOperators>>); + // std::vector static_assert(QTypeTraits::has_operator_equal_v<std::vector<QString>>); static_assert(QTypeTraits::has_operator_less_than_v<std::vector<QString>>); @@ -127,6 +132,10 @@ static_assert(QTypeTraits::has_operator_less_than_v<std::map<int, QString>>); static_assert(!QTypeTraits::has_operator_equal_v<std::map<int, NoOperators>>); static_assert(!QTypeTraits::has_operator_less_than_v<std::map<int, NoOperators>>); +// std::optional +static_assert(QTypeTraits::has_operator_equal_v<std::optional<QString>>); +static_assert(!QTypeTraits::has_operator_equal_v<std::optional<NoOperators>>); + // nested types static_assert(QTypeTraits::has_operator_equal_v<Nested>); static_assert(!QTypeTraits::has_operator_less_than_v<Nested>); |