[Development] <version> (was: Re: C++20 @ Qt)
marc.mutz at qt.io
Thu Nov 10 09:25:38 CET 2022
Given that Integrity seems to be the only tool-chain missing <version>
in dev, I propose the following policy going forward:
> To detect post-C++17 library features, we require that <version> exists.
That means that if <version> does not exist, we will not detect
post-C++17 library features on that platform, even if they should exist.
Practically, this means that qglobal.h (or one if it's offspring) would
# include <version>
unconditionally and we will detect post-C++17 library features only this
way, going forward:
# include <foo>
and no longer this way:
#if __has_include(<foo>) && __cplusplus > 201703L
# include <foo>
To not break existing uses, however, existing checks that do the
__has_include dance should not be cleaned up before we require the resp.
library feature unconditionally.
What do you think?
On 06.11.22 19:58, Marc Mutz via Development wrote:
> Hi all,
> [https://bugreports.qt.io/browse/QTBUG-108228 for details]
> After looking at libc++, libstdc++ and MS STL's <version>, it seemed
> like it wouldn't #error out if #included in a C++17 project. So I've
> kicked off a precheck on Gerrit, and so far, it looks like Integrity is
> the only tool-chain that doesn't have a <version> header, yet:
> On other tool-chains, it appears to be usable in C++17 builds, too.
> I'll ask our Integrity experts to find out whether there are any plans
> by GHS to add this header before their next major release, or as a
> patch that Qt users could apply to their installation.
Marc Mutz <marc.mutz at qt.io>
Principal Software Engineer
The Qt Company
Erich-Thilo-Str. 10 12489
Geschäftsführer: Mika Pälsi, Juha Varelius, Jouni Lintunen
Sitz der Gesellschaft: Berlin,
Registergericht: Amtsgericht Charlottenburg,
HRB 144331 B
More information about the Development