C++26: Acum compilatorul știe că 5 metri nu e același lucru cu 5 secunde
Quantity-safe analog literals în C++26 — o bibliotecă care împiedică amestecarea kilogramelor cu amperii. În sfârșit, compilatorul va certa experimentele culinare din cod.

Știți senzația aia când ești sigur că trimiți distanța în metri, dar funcția așteaptă timp în secunde, și brusc satelitul tău zboară pe o orbită greșită? Membrii comitetului C++ știu și ei — și probabil s-au săturat să citească rapoarte de accidente. Așa că în C++26 (da, sunt deja acolo) a apărut o noutate: quantity-safe analog literals.
Ideea e simplă: scrii 5_m, iar compilatorul înțelege că sunt metri. Dacă încerci să aduni 5_m cu 3_s, el te va trimite politicos (sau nu) să citești documentația. Fără conversii implicite, fără „a, am crezut că sunt picioare”. Totul e strict, ca într-o bancă elvețiană, dar pentru unități de măsură.
Sub capotă — magie template care transformă literalii fără dimensiuni în cantități type-safe. Dezvoltatorii promit că nu afectează performanța: optimizerul va arunca toate învelișurile, lăsând numerele goale. Dar principalul e că pipeline-ul tău CI va pica acum nu doar din cauza unui punct și virgulă uitat, ci și pentru că ai încercat să aduni volți la litri.
Desigur, poți spune: „Și ce? Mie îmi merge și așa.” Dar dacă ai făcut vreodată debugging la un bug unde vitezometrul arăta mile pe oră în loc de kilometri, vei aprecia. Mai ales dacă bug-ul ăla ți-a costat un deploy de noapte.
Comentariul studioului METABYTE: Nu promitem că după trecerea la C++26 proiectele voastre nu vor mai pica, dar măcar compilatorul va certa unitățile de măsură, nu tab-urile în loc de spații. Progres, totuși.
URMATORUL PAS
Ti-a placut abordarea?
Aplicam aceleasi principii in proiectele clientilor: AI, automatizari, produse care nu se sting dupa lansare.