>> <bit> header Not yet available with Apple CLang (I did not test today, but a fews ago).
Philippe On Tue, 02 May 2023 17:39:01 -0700 Thiago Macieira <thiago.macie...@intel.com> wrote: > C++23 is on the way, so maybe it's time for us to raise our minimum to the > one > version before that. Let's aim for Qt 6.7, because feature-freeze for 6.6 is > within one month, and lets us warn our users this is coming. > > By this, I mean to: > * modify our build system so Qt compiles with -std=c++20 or equivalent > * require that user code compiling Qt headers be similarly done > * remove the requirement for #if checks for C++17 Standard Library features > * make a couple of C++20 features mandatory (see below) > > Of the C++20 features I currently see a good reason to make mandatory: > * feature-test macros (no change: we're already using them) > * spaceship operator and <compare> header > * char8_t > * std::is_constant_evaluated() > * constinit > * <bit> header > * (maybe) designated initialisers > * (maybe) constexpr from <algorithm> and <utility> > > I'm not proposing modules, concepts or coroutines be allowed in our code just > yet. I think concepts will be the first of those, but we need to understand > how > to use them first and how our code will change. I'd love to require > std::format > and std::source_location, but those don't seem to be ready in the proposed > versions above. > > For this, I'd also like to request we raise our minimum compiler versions to: > * GCC 10 (released May 2020) > * Clang 10 (released March 2020) > * MSVC 2022 that is current today > * XCode that is current today > > Clang and GCC will be, at the time of Qt 6.7's release, just under 4 years > old. That should be enough to have been included in any long-term support > Linux distribution. Currently, both SLE 15.4 and RHEL/RockyLinux 9 have GCC > 13, while Ubuntu 22.04 and Debian 11 (current stable) have GCC 11. Debian > will > probably release its next stable before Qt 6.7, though whether it'll still > upgrade from GCC 12 to 13 I don't know. When we released Qt 6.0, our minimum > of GCC 8 was of a lower age, at 2.5 years, so we could reasonably bump our > minimum GCC to 11 and still be 6 months more lenient. There are no new > features in GCC 11 that we could use without also requiring a more recent > Clang. > > Speaking of Clang, I simply chose a contemporaneous version and one that had > a > similar feature list. FreeBSD 13-STABLE (13.2) comes with Clang 14, which is > much newer. We could raise the minimum if we wanted, but the intersection of > features with GCC 10 or 11 doesn't change much; we get std::bit_cast with > Clang/libc++ 14, but that's about it. > > This proposal also drops MSVC 2019 and assumes that users of 2022, like > XCode, > keep their compilers reasonably up-to-date. That is, that they'll update to > the latest at least once in the next 10 months. > > I don't have access to QNX and INTEGRITY toolchain information, so I'd like > to > request that they simply match the feature list above, with minimal > workarounds. > > Opinions? > -- > Thiago Macieira - thiago.macieira (AT) intel.com > Cloud Software Architect - Intel DCAI Cloud Engineering -- Development mailing list Development@qt-project.org https://lists.qt-project.org/listinfo/development