diff options
author | Fabian Kosmale <fabian.kosmale@qt.io> | 2021-03-23 22:29:53 +0100 |
---|---|---|
committer | Fabian Kosmale <fabian.kosmale@qt.io> | 2021-04-19 07:39:41 +0200 |
commit | 0a9711d668f7ad7b156fa4e78afb54a97243b7ef (patch) | |
tree | 5befe156de1ec4bed9a00e849d420a6deaa8d49a /cmake/QtBuildInternals/QtBuildInternalsConfig.cmake | |
parent | edf4e34797e7a31ac8318784270224d6aeb7a2af (diff) |
QTypeInfo: Handle T::value_type being equal to T
Fix operator checks for containers whose value_type equals themselves.
It does not make sense to recurse on value_type in that case. Thanks to
std::disjunction having short-circuiting semantics, we can avoid that
issue by checking first whether T is T::value_type.
As a drive-by, check for value_type typedef before checking for
begin/end in is_container. This works around an issue in gcc <= 8.1,
which fails to correctly SFINAE the case where begin and end are private
methods.
Fixes: QTBUG-89456
Change-Id: I27305a7cfe050f13a279c07f00bc229c01daa25b
Reviewed-by: Ulf Hermann <ulf.hermann@qt.io>
(cherry picked from commit ce83e56cfeb2806181ec1daade9690f4c90b901c)
Diffstat (limited to 'cmake/QtBuildInternals/QtBuildInternalsConfig.cmake')
0 files changed, 0 insertions, 0 deletions