[Development] <version> (was: Re: C++20 @ Qt)
Marc Mutz
marc.mutz at qt.io
Mon Nov 14 11:14:49 CET 2022
On 12.11.22 14:32, Giuseppe D'Angelo via Development wrote:
> I'm not sure if this has been explicitly discussed, but a prerequisite
> for this scheme to work is that compiler vendors *do not* define library
> feature macros inside <version> that you cannot use in the current C++
> version. In other words, having the proposed:
>
> #if __cpp_some_cpp23_feature
> # include <cpp23_feature>
> #endif
>
> is never going to blow up with some #error inside the included header
> when compiling in pre-C++23 mode. I'm guessing that's always the case,
> right?
I'm hoping that the vendors have learned from the SD-6 __has_include
fiasco, and won't repeat it for C++23. So far, the CI results, as well
as inspecting <version> in the three openly-visible implementations (MS
STL, libc++, libstdc++) suggests that they did:
- https://github.com/llvm/llvm-project/blob/main/libcxx/include/version#L381
-
https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/std/version#L302
- https://github.com/microsoft/STL/blob/main/stl/inc/yvals_core.h#L1644
From my pov, the risk is currently more on the C++17 side.
Thanks,
Marc
--
Marc Mutz <marc.mutz at qt.io>
Principal Software Engineer
The Qt Company
Erich-Thilo-Str. 10 12489
Berlin, Germany
www.qt.io
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
mailing list