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
this
parameter (no lesson yet).
- Fixed-size floating point types (via <stdfloat>) (no lesson yet).
- Formatted printing functions
std::print
and std::println
(no lesson yet)
- Literal suffixes for
std::size_t
and 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
#elifdef
and #elifndef
(no lesson yet).
- Preprocessor directive
#warning
(no lesson yet).
- Stacktrace library (no lesson yet)
- Standard library modules
std
(and std.compat
) (no lesson yet).
- Static
operator()
and operator[]
(no lesson yet).
std::bitset
now fully constexpr.
std::expected
(no lesson yet)
std::ranges
algorithms starts_with
, ends_with
, contains
(no lesson yet)
std::string::contains
and std::string_view::contains
(no lesson yet)
std::to_underlying
to 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).
B.5 — Introduction to C++23
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.
std::abs()
), and <cstdlib> (6.7 -- Relational operators and floating point comparisons).std::unique_ptr
(no lesson yet).this
parameter (no lesson yet).std::print
andstd::println
(no lesson yet)std::size_t
and the corresponding signed type (5.2 -- Literals).operator[]
(Mentioned in lesson 17.13 -- Multidimensional std::array).std::mdspan
(17.13 -- Multidimensional std::array).#elifdef
and#elifndef
(no lesson yet).#warning
(no lesson yet).std
(andstd.compat
) (no lesson yet).operator()
andoperator[]
(no lesson yet).std::bitset
now fully constexpr.std::expected
(no lesson yet)std::ranges
algorithmsstarts_with
,ends_with
,contains
(no lesson yet)std::string::contains
andstd::string_view::contains
(no lesson yet)std::to_underlying
to get the underlying type of enum (13.6 -- Scoped enumerations (enum classes)).std::unreachable()
(no lesson yet).