C++ теперь понимает, что 5 метров — это не 5 секунд

В C++26 завезли quantity-safe analog literals — библиотека, которая не даст вам перепутать килограммы с амперами. Наконец-то компилятор будет ругаться на ваши кулинарные эксперименты с кодом.
Знаете это чувство, когда ты уверен, что передаёшь расстояние в метрах, а функция ждёт время в секундах, и вдруг твой спутник улетает не на ту орбиту? Разработчики комитета C++ тоже это знают — и, видимо, устали отчёты об авариях читать. Поэтому в C++26 (да, они уже там) появилась диковинка: quantity-safe analog literals.
Суть простая: вы пишете 5_m, и компилятор понимает, что это метры. А если попытаетесь сложить 5_m и 3_s, он вежливо (или не очень) пошлёт вас читать документацию. Никакого неявного приведения, никаких «ой, я думал, это футы». Всё строго, как в швейцарском банке, только для единиц измерения.
Под капотом — шаблонная магия, которая превращает лишённые размерности литералы в типобезопасные величины. Разработчики обещают, что это не повлияет на производительность: оптимизатор выкинет все обёртки, оставив голые числа. Но главное — ваш CI-пайплайн теперь будет падать не только из-за забытой точки с запятой, но и из-за того, что вы пытались прибавить вольты к литрам.
Конечно, можно сказать: «А зачем? У меня и так всё работает». Но если вы когда-нибудь дебажили баг, где спидометр показывал мили в час вместо километров, вы оцените. Особенно если этот баг стоил вам ночного деплоя.
Комментарий студии METABYTE: Мы, конечно, не обещаем, что после перехода на C++26 ваши проекты перестанут падать, но хотя бы компилятор будет ругаться на единицы измерения, а не на табуляцию вместо пробелов. Прогресс, однако.