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++