What is C++23?
In February of 2023, the ISO (International Organization for Standardization) approved a new version of C++, called C++23.
New improvements in C++23
For your interest, here’s a list of the major changes that C++23 adds. Note that this list is not comprehensive, but rather intended to highlight some of the key changes of interest.
- Constexpr <cmath> (e.g.
std::abs()), and <cstdlib> (6.7 -- Relational operators and floating point comparisons). - Constexpr
std::unique_ptr(no lesson yet). - Explicit
thisparameter (no lesson yet). - Fixed-size floating point types (via <stdfloat>) (no lesson yet).
- Formatted printing functions
std::printandstd::println(no lesson yet) - Literal suffixes for
std::size_tand the corresponding signed type (5.2 -- Literals). - Multidimensional subscript
operator[](Mentioned in lesson 17.13 -- Multidimensional std::array). - Multidimensional span
std::mdspan(17.13 -- Multidimensional std::array). - Preprocessor directives
#elifdefand#elifndef(no lesson yet). - Preprocessor directive
#warning(no lesson yet). - Stacktrace library (no lesson yet)
- Standard library modules
std(andstd.compat) (no lesson yet). - Static
operator()andoperator[](no lesson yet). std::bitsetnow fully constexpr.std::expected(no lesson yet)std::rangesalgorithmsstarts_with,ends_with,contains(no lesson yet)std::string::containsandstd::string_view::contains(no lesson yet)std::to_underlyingto get the underlying type of enum (13.6 -- Scoped enumerations (enum classes)).std::unreachable()(no lesson yet).- Using unknown pointers and references in constant expressions (17.2 -- std::array length and indexing).
