Átnéztem a hivatkozott anyagokat és arra jutottam, hogy az egész hisztéria onnan jön, hogy a biztonsági hibák túlnyomó többsége címzési hibákból adódik.
A google szerint is megoldható lenne a probléma, ha a programozók a C++ nyelvnek csak egy részét használnák, ami egyébként tök memóriabiztos kódot tud generálni.
Ennek tetejébe az is könnyen megoldható, hogy a [] operátorok kódjába alapból beleforduljon egy határellenőrzés is, bár ez bizonyos esetekben elég komoly performancia csökkenést tud okozni.
Persze ha [] helyett a modern C++ iterációs módszereit használjuk a kódunk gyors lesz, még a kód is olvashatóbb lesz, de más logikával kell dolgozni.
A gond az, hogy arra nem lehet felkészíteni sem a fordítót, sem a containereket, ha valaki veszi pl. egy vector vagy string első elemének címét és pointer aritmetikával ír meg egy parsert, ami rosszul ellenőrzi a buffer végét. Ugyanakkor sokak szerint csak így lehet csak extrém hatékony parsert írni. bison, yacc már kiment a divatból.
Szóval, ha C++ fordítóval csak a nyelv modern részét használjuk, esetleg használunk [] operátorokat befordított határellenőrzéssel, nem írunk C-örökség pointer aritmetikát, akkor kb. ugyanott lehetünk, mint Rust-tal. A különbség, hogy ez C++-ban választás kérdése, Rust alatt pedig kényszer.