What is new in C++23?

  • std::print and std::println: easy formatted output.
  • std::expected: a value or an error, without exceptions.
  • Deducing this: one member function for const and non const objects.
  • std::mdspan: a view of multidimensional data.
  • std::flat_map, std::flat_set, std::generator and more ranges features.
  • if consteval, std::unreachable, std::to_underlying and others.
#include <expected>
#include <print>
#include <utility>

enum class Color { Red = 1, Green = 2 };

std::expected<int, std::string> half(int n) {
    if (n % 2) return std::unexpected("odd number");
    return n / 2;
}

int main() {
    std::println("{}", half(10).value());
    std::println("{}", half(7).error());
    std::println("{}", std::to_underlying(Color::Green));
}
Output

5
odd number
2

All of these compile with GCC 16 and -std=c++23. See Modern C++ Features.


Learn more about the similar topics:
Tutorials
No Content Found.
Exercises & Assignments
No Content Found.
Interview Questions & Answers
No Content Found.