C++26

C++26 on C++-ohjelmointikielen ISO-standardiversio, joka kehitetään C++23-standardin seuraajaksi. Standardin on suunniteltu valmistuvan vuonna 2026.

Ominaisuudet

Mukaan äänestettyjä kohtia ovat:

Ehdotettuja kehityskohtia ovat:

Neljäksi avainkohdaksi mainitaan asynkronisen suorittamisen std::execution parannukset, tyyppi- ja muistiturvallisuuden parannukset, reflektio ja contracts. Eräs ehdotettu muutos on, että alustamaton muuttuja ei enää ole määrittelemätöntä (P2795R5). Muutoksen myötä alustamaton luku voidaan määritellä virheeksi. Lisäksi muut määrittelemättömät käytökset voidaan poistaa (P3436R1).

Contracts

Contracts on C++:n tuki sopimuspohjaiseen ohjelmointiin, johon kuuluvat avainsanat contract_assert, pre ja post. Avainsanoilla voidaan määrittää esi- ja jälkiehtoja, joita ohjelma ei voi rikkoa suorituksen aikana. Contracts mahdollistaa assert-määrityksien siirtämisen aliohjelmien määrittelyyn, jolloin ne ovat näkyviä aliohjelman kutsujille ja staattinen analyysin työkaluille. Menettely korvaa C-kielen assert-makron.

Lähteet

  1. ↑ Current Status isocpp.org. Viitattu 5.7.2024. (englanniksi)
  2. ↑ C++ IS schedule (PDF) open-std.org. 14.5.2024. Viitattu 5.7.2024. (englanniksi)
  3. ↑ Five Awesome C++ Papers for the H1 2023 - C++26 cppstories.com. Viitattu 17.7.2024. (englanniksi)
  4. 1 2 Herb Sutter: C++26 is done! — Trip report: March 2026 ISO C++ standards meeting (London Croydon, UK) herbsutter.com. 29.3.2026. Viitattu 31.3.2026. (englanniksi)
  5. ↑ Hazard Pointers for C++26 (PDF) open-std.org. Viitattu 5.7.2024. (englanniksi)
  6. ↑ Proposed Wording for Concurrent Data Structures: Hazard Pointer and Read-Copy-Update (RCU) (PDF) open-std.org. Viitattu 5.7.2024. (englanniksi)
  7. ↑ Paul E. McKenney: Structured Deferral: Synchronization via Procrastination (PDF) dl.acm.org. 2013. doi:10.1145/2488364.2488549 Viitattu 5.7.2024. (englanniksi)
  8. ↑ Read-Copy Update (RCU) (PDF) open-std.org. 8.3.2023. Viitattu 17.7.2024. (englanniksi)
  9. ↑ A nice placeholder with no name (PDF) open-std.org. Viitattu 17.7.2024. (englanniksi)
  10. ↑ UB? In My Lexer? (PDF) open-std.org. Viitattu 17.7.2024. (englanniksi)
  11. ↑ Native handles and file streams open-std.org. Viitattu 17.7.2024. (englanniksi)
  12. ↑ Reflection for C++26 open-std.org. 15.10.2023. Viitattu 17.7.2024. (englanniksi)
  13. ↑ Reflection for C++26 open-std.org. 12.10.2024. Viitattu 15.11.2024. (englanniksi)
  14. ↑ Reflection for C++26 open-std.org. 20.6.2025. Viitattu 31.3.2026. (englanniksi)
  15. 1 2 Tim Anderson: Contracts are in C++26 despite disagreement over their value theregister.com. 31.3.2026. Viitattu 31.3.2026. (englanniksi)
  16. ↑ Contracts for C++ (PDF) open-std.org. 13.2.2025. Viitattu 31.3.2026. (englanniksi)
  17. ↑ C++26 Contract Assertions, Reasserted (PDF) open-std.org. 6.10.2025. Viitattu 31.3.2026. (englanniksi)
  18. ↑ P2300R10 std::execution open-std.org. 28.6.2024. Viitattu 14.8.2024. (englanniksi)
  19. ↑ Louis Dionne, Alex Rebert, Max Shavrick, Konstantin Varlamov: Practical Security in Production - Hardening the C++ Standard Library at massive scale queue.acm.org. 7.11.2025. Viitattu 31.3.2026. (englanniksi)
  20. ↑ Ville Voutilainen: To boldly suggest an overall plan for C++26 open-std.org. 20.9.2022. Viitattu 17.7.2024. (englanniksi)
  21. ↑ Basic linear algebra algorithms (since C++26) en.cppreference.com. Viitattu 14.8.2024. (englanniksi)
  22. ↑ Basic Linear Algebra Subprograms Technical (BLAST) Forum Standard (PDF) netlib.org. 21.8.2001. Viitattu 14.8.2024. (englanniksi)
  23. ↑ Tim Anderson: ISO C++ Chair Herb Sutter leaves Microsoft, declares forthcoming C++ 26 ‘most impactful release since C++11’ devclass.com. 12.11.2024. Viitattu 15.11.2024. (englanniksi)
  24. ↑ Thomas Köppe: Erroneous behaviour for uninitialized reads open-std.org. 22.3.2024. Viitattu 15.11.2024. (englanniksi)
  25. ↑ Herb Sutter: Strategy for removing safety-related UB by default (PDF) isocpp.org. 31.10.2024. Viitattu 15.11.2024. (englanniksi)
  26. ↑ Contract assertions en.cppreference.com. Viitattu 21.5.2026. (englanniksi)
  27. ↑ Sergio De Simone: C++26: Reflection, Memory Safety, Contracts, and a New Async Model infoq.com. 17.4.2026. Viitattu 21.5.2026. (englanniksi)

Aiheesta muualla