METABYTE
Inapoi la articole

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.

12 mai 20262 min de citit
C++26: Acum compilatorul știe că 5 metri nu e același lucru cu 5 secunde

Ș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.