diff options
author | Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> | 2021-04-15 16:10:12 +0200 |
---|---|---|
committer | Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> | 2021-04-16 16:49:28 +0200 |
commit | 5656a60dd067a69f9e864a33068ec300124d4e05 (patch) | |
tree | b8e11ad6201f9299361db19faf3afef30908d3cf /configure.cmake | |
parent | b322bfcc14845a4b6a6eef85ef359b1e4591a5ca (diff) |
QList::(const_)iterator: protect element_type on GCC < 11
GCC 10 in C++20 mode will still try to use
std::indirectly_readable_traits on QList iterators, and since it
does not have the fixes for LWG 3346 / 3541, it will fail to build:
/usr/include/c++/10/bits/iterator_concepts.h: In substitution of ‘template<class _Tp> using __iter_value_t = typename std::__detail::__iter_traits_impl<_Tp, std::indirectly_readable_traits<_Iter> >::type::value_type [with _Tp = QList<std::pair<int, int> >::const_iterator]’:
/usr/include/c++/10/bits/iterator_concepts.h:248:11: required by substitution of ‘template<class _Tp> using iter_value_t = std::__detail::__iter_value_t<typename std::remove_cv<typename std::remove_reference<_Tp>::type>::type> [with _Tp = QList<std::pair<int, int> >::const_iterator]’
/usr/include/c++/10/bits/iterator_concepts.h:468:11: required from ‘class std::reverse_iterator<QList<std::pair<int, int> >::const_iterator>’
../src/corelib/itemmodels/qsortfilterproxymodel.cpp:669:43: required from here
/usr/include/c++/10/bits/iterator_concepts.h:243:13: error: ambiguous template instantiation for ‘struct std::indirectly_readable_traits<QList<std::pair<int, int> >::const_iterator>’
243 | using __iter_value_t = typename
| ^~~~~~~~~~~~~~
/usr/include/c++/10/bits/iterator_concepts.h:231:12: note: candidates are: ‘template<class _Tp> requires requires{typename _Tp::value_type;} struct std::indirectly_readable_traits<_Iter> [with _Tp = QList<std::pair<int, int> >::const_iterator]’
231 | struct indirectly_readable_traits<_Tp>
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/iterator_concepts.h:236:12: note: ‘template<class _Tp> requires requires{typename _Tp::element_type;} struct std::indirectly_readable_traits<_Iter> [with _Tp = QList<std::pair<int, int> >::const_iterator]’
236 | struct indirectly_readable_traits<_Tp>
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
So hide element_type as well.
The CI didn't catch this because the CI doesn't build in C++20 mode.
Amends 595b4e1a9b4.
Change-Id: I5c8e47d693ca584571cd89f856d08ba249dd05ab
Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io>
Diffstat (limited to 'configure.cmake')
0 files changed, 0 insertions, 0 deletions