-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
"Безопасные" приведения целочисленных типов #575
Comments
А почему вы считаете что эта проверка должна быть внутри, а не снаружи?
|
gls::narrow GSL |
@kov-serg я не считаю, я беру это за предпосылку. Такой код уже есть, и с ним как-то нужно жить и ловить баги. |
@vtopunov это близко, но в геймдеве исключения запрещены по религиозным причинам, поэтому хочется всё таки аналог ассёрта, то есть контракт. |
|
Ну да, но операция эта настолько частая, что хочется иметь в стандарте кошерный способ её проводить. Особенно всякие касты между signed и unsigned. |
На горизонте контракты. В связи с этим хочется автоматизировать довольно часто встречающийся на практике отрывок кода:
Обычно такое выходит, когда "по дефолту" в публичных интерфейсах ставят простые типы, а потом оказывается, что на самом деле хватит 16 или даже 8 бит, имплементацию меняют для экономии памяти/перфа, а публичное АПИ менять нельзя (не хочется, сложно, ...). Но кажется и другие кейсы не сложно придумать.
Идея следующая:
Таким образом получаем явную передачу намерения "я точно знаю, что должно влезть, приведение по модулю 2^n -- ошибка", плюс автоматическую ловлю багов в режиме проверки контрактов в рантайме.
The text was updated successfully, but these errors were encountered: