
GCC 12 defaults to the C++17 (namely the GNU++17 dialect) by default for C++ but more of C++23 has been implemented in this annual compiler update. Though in GCC 12, both C++20 and C++23 are still considered experimental.
GCC 12 implements C++23's features for if consteval, auto(x), non-literal variables in constexpr functions, multi-dimensional subscript operator, elifdef and elifndef pre-processing directives, extended init-statement, folding of trivial functions, and much more. GCC 12 is also introducing various new and improved compiler warnings.
More details on the C++ improvements to find with the upcoming GCC 12 can be found via the Red Hat Developers' Blog .
There are also static analyzer improvements and much more to enjoy with GCC 12 - stay tuned for my feature recap and more compiler benchmarks soon. In GCC 13 next year they are aiming to have the C++23 support squared away.