использовать
если нельзя, то что, у всего кода, включая заголовки сторонних библиотек, забирать гарантию стандарта на поведение при переполнении size_t?
интересно как поведёт себя вектор при переполнении size _t..
интересно, как вы будете доказывать, что вся ваша кодовая база не полагается на поведение при переполнении size_t
почему вся то? Я не предлагаю изменить поведение size_t, а аттрибут или что то такое поставить
возвращаемся к первому вопросу: если вы можете модифициировать код, чтобы расставить атрибуты, почему вы не можете просто заменить беззнаковые счетчики на знаковые
я поставлю у себя аттрибут а компилятор уже потом увидит что переполнение можно не учитывать и оптимизирует и стандартную библиотеку в том числе
что она должна делать в этом случае? ну у вас 32х битная система вы создали вектор (байтовый) на все адресное простратнство?
а что в этом случае произойдет сейчас?..
у вас память кончиться раньше чем счетчик дойдет до максимума.
я хочу гарантию >= 0, но также хочу гарантию не переполнения
ну напишите свой тип с нужными гарантиями. мне вот в микроконтроллере нужно что когда счетчик достиг максимума и я делают ++ я получаю 0.
как блин я сделаю свой тип с ТАКОЙ гарантией ДЛЯ КОМПИЛЯТОРА?
Ручные гарантии гибче автоматических. Проверки вставлять можно где вам нужно, а где не нужно, все можно вычислять без проверок.
да каких блин проверок, компилятор не имеет гарантии что не переполнится
Знаковые отличаются от беззаконных не только гарантиями при переполнении, но ещё и их семантикой. Поэтому кажется разумным отделить знаковость/беззнаковость от наличия/отсутствия гарантий. Почему эти два свойства должны непременно идти вместе, кроме мне непонятно (ну, корме того, что это историческое наследие)
Обсуждают сегодня