возможностями определить что что результат выходит за пределами типа?
нету
понял. СПС!
если результат помещается в больший тип, то можно просто сравнить с пределами в std::numeric_limits. если нет, то нет
У тебя UB видно
Ок. Я так то сам могу проверять, мне главное знать что встроенных исключении нету, или по типу c# check/uncheck !
не, такого точно нет для стандартных типов. Если требуется такое поведение, то надо смотреть в библиотеки, которые свои классы для чисел предлагают или свои врапперы писать
Т.к. здесь UB, то как раз таки есть, ибо в констекспр функция UB запрещены и приводят к ошибке компиляции
У меня без ошибки, просто результат отрицательный, так как старший бит равняется 1.
как бы да, но это значит полагаться на полноту реализации, что может быть не очень надежно
В констекспр функции?
Щас попробую. Как бы давно на cpp не писал. constexpr вообще не использовал, но уже читал понял что это)
Наверно у меня не 11 стандарт, тоже компилируется, но пишет что переполнение в редакторе кода.
constexpr только в 11 стандарте появился. до него даже не было такого ключевого слова
Ну по сути если даже и есть, то аргументы у меня тоже должны быть константнимы, Но если скажем число вводит пользователь, то уже никак.
конечно если такую функцию на основе константных выражений все-таки писать, то лучше сразу consteval, но это 20 стандарт
Обсуждают сегодня