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: hazardiosoittimet: rinnakkaiseen käsittelyyn tarkoitetut lukottomat osoittimet, joilla on yksi kirjoittaja ja useita lukijoita. Vain osoittimen omistaja voi asettaa sen arvon ja mikä tahansa määrä säikeitä voi lukea sen arvon. Hazardiosoittimet ovat samankaltainen tekniikka kuin Read-Copy-Update (RCU); ensimmäinen on käytössä MongoDB:ssä ja jälkimmäinen on käytössä Linuxissa. Myös Read-Copy-Update -mekanismin tukea on ehdotettu lisättäväksi C++26-standardiin.
nimen pois jättäminen tietyissä tilanteissa
määrittelemättömän käytöksen poistaminen tietyissä tilanteissa (P2621R3)
alustakohtaiset tiedostokahvat
reflektio, käännösaikaisesti ilman suoritusaikaista kuormitusta
contracts, funktioiden esi- ja jälkiehdot, ominaisuus on ollut kiistanalainen useista eri syistä johtuen
asynkroninen suoritus std::execution
standardikirjaston vahvennukset
Ehdotettuja kehityskohtia ovat: lineaarialgebra (osa Fortranille kehitetystä BLAS-standardista)
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
Aiheesta muualla C++26 ominaisuudet ja tuki kääntäjissä
Luokka:C++