Az ISO C++ bizottsága a napokban jelentette be, hogy legutóbbi gyűlésén megtartott szavazásán egyhangúlag sikerült elfogadnia a nyelv következő verziójának specifikációját. Ezzel a C++20 technikai értelemben véglegesnek tekinthető, és mindössze a specifikációt rögzítő dokumentum végleges formára hozatala van hátra annak hivatalos publikálása előtt.

A C++20 négy téren hoz jelentős fejlesztéseket elődjeihez képest. A moduloknak köszönhetően a fordítóknak elég lesz egyszer értelmezniük a nagy könyvtárak interfész-állományait, amit aztán bináris formában tudnak majd tárolni, és innen betölteni a későbbi fordítások menetek során. Ennek köszönhetően gyorsabbá válhat az ezeket használó programok fordításának folyamata, és élesebbé válik az interfész és az implementáció részét képező kódok elválasztása egymástól.

Ezzel szemben a koncepciók (concepts) bevezetése az eddig meglehetősen szabados template rendszert tereli be szigorúbb keretek közé, és lehetővé teszi azok paramétereivel szemben kapcsolatos elvárások megfogalmazását. Ezzel kizárhatók a template-ek rossz paraméterezéséből adódó legsúlyosabb hibák, illetve egyértelműbbé tehetők az ennek kapcsán keletkező hibaüzenetek.

A corutinok az erősen az aszinkron feldolgozási feladatokban jutnak majd fontos szerephez. Segítségükkel olyan függvényeket lehet készíteni, amik formálisan már az előtt visszaadhatják a vezérlést hívóiknak, hogy a bennük foglalt kódok végrehajtása befejeződött volna, ami valójában egy későbbi időben újrakezdődhet. Segítségükkel explicit callback-ok kiírásának szüksége nélkül lehet majd összetett, többlépcsős aszinkron folyamatokat is definiálni.

Végül pedig a nyelv egy teljesen új standard könyvtárat fog kapni a Ranges formájában, ami - ahogy neve is egyértelművé teszi - a különböző értéktartományok kezelésében - beleértve ezek definiálását, illetve a közöttük történő műveletek végzésében - segít majd a fejlesztőknek. Ezen kívül az új verzió számos további apró finomítást is hoz, valamint bevezeti a csészealj operátor használatának lehetőséget, amivel a korábbiaknál rövidebben lehet majd a két operandus egyenlőségét, illetve kisebb-nagyobb relációját vizsgáló, majd ezek alapján elágazó összetett feltételes szerkezeteket ábrázolni.

Az ISO C++ biztossága a tervek szerint még az idei év vége előtt végleges formába önti majd a C++20 specifikációját, ami ezek után hivatalosan is publikálásra kerülhet. Amennyiben a munka esetleg átcsúszna a jövő évre, az nem fog változtatni az új verzió elnevezésen, és az továbbra is C++20-ként jelenik majd meg.

A nyelv következő verziója, a C++23 többek között egy rakás standard modullal, valamint a párhuzamos végrehajtás nyelvi szintre emelésével folytathatja majd a C++ fejlesztését.