Jump to content

C++26

From Wikipedia, the free encyclopedia
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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

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

Language

  • 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

  • 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

References

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