I have g
installed on CentOS9
g (GCC) 11.2.1 20220127 (Red Hat 11.2.1-9)
I can compile with switch -std=c 20
without errors/warnings.
When I search filesystem for '11' I find
/usr/lib/gcc/x86_64-redhat-linux/11
/usr/include/c /11
/usr/libexec/gcc/x86_64-redhat-linux/11
But when I search for '20' I get nothing.
How do I "install" C 20 ? What is it and how can it be done on RH/CentOS ?
CodePudding user response:
11
in the file path is the compiler version, not the C version. So it is not a problem that there is no corresponding path with a 20
.
If -std=c 20
doesn't give an error, you have (at least to some degree) C 20 support.
Theoretically there is the __cplusplus
macro, which is predefined to a value of at least 202002L
for enabled C 20 support, but in practice that doesn't mean that all C 20 features are supported.
There are further feature-specific feature test macros that may be of help.
For an overview of what exactly is supported in which compiler version see https://en.cppreference.com/w/cpp/compiler_support, as well as the corresponding pages of the individual compilers.
As you can see there, with GCC 11 you have mostly complete C 20 support, except for few items, especially in the standard library, such as for example full module support, constexpr
for std::string
and std::vector
, atomic shared pointers and notably std::format
.