C++26 is the informal name for the version of the International Organization for Standardization (ISO) and International Electrotechnical Commission (IEC) 14882 standard for the C++ programming language that follows C++23. The current working draft of this version is N4981.[1]

Features

edit

Changes that have been accepted into C++26 include:

Language

edit
  • Unevaluated strings
  • Adding @, $, and ` to the basic character set
  • constexpr cast from void*
  • User-generated static_assert messages
  • Placeholder variables with no name
  • Pack indexing
  • Attributes for structured bindings
  • Erroneous behavior for uninitialized reads
  • = delete("reason");
  • Variadic friends

Library

edit
  • Hashing support for std::chrono value classes
  • std::is_within_lifetime
  • Native handles in file streams
  • Interfacing string streams with std::string_view
  • Interfacing std::bitset with std::string_view
  • More constexpr for <cmath> and <complex>
  • Adding the new 2022 SI prefixes on ratios: std::quecto, std::ronto, std::ronna, and std::quetta
  • std::copyable_function
  • std::submdspan()
  • <debugging>: Debugging Support
  • <linalg>: A free function linear algebra interface based on the BLAS
  • Added tuple protocol to std::complex
  • views::concat
  • Concatenation of strings and string views
  • std::ranges::generate_random
  • Printing blank lines with std::println()
  • std::formatter<std::filesystem::path>
  • Saturation arithmetic with, among others, std::add_sat, std::div_sat
edit

References

edit
  1. ^ "Working Draft, Standard for Programming Language C++" (PDF). Open Standards. ISO/IEC. 2024-04-16.