то делайте в нем что хотите (храните только валидный указатель)
"Делайте правильно, неправильно не делайте" - универсальный совет на любую проблему в программировании. Вопрос в том, как иметь гарантию, что указатель ненулевой и избежать лишних проверок. gsl::not_null решает эту проблему в некоторой мере. Он всё равно не может сказать, не была ли память по указателю освобождена. Ссылки в расте же закрывают и этот момент.
Если мне нужно сохранить валидный указатель в поле класса, а потом поменять на другой указатель, ссылка не позволит это сделать. Удачи построить бинарное дерево на ссылках.
программист не проверяет указатель на недействительность
Нет, проблема в том, что нет типа "валидный указатель". В результате везде, где используется указатель, его необходимо проверять, вместо того чтобы проверить один раз и кастануть к типу "валидный".
Ну понятно, что со старым проектом только и остаётся баги чинить. Проблема в том, что реальный мир меняется. Поменяется сильно - вас выкинут вместе с проектом. Для стран такой подход не катит, что бы сидел правитель и старательно сохранял status quo государства, и всё отлично шло по накатанной.
На одном из европейских аналитических порталов мне попалась интересная заметка... надо ужесточить регулирование соцсетей
Интересно, как из заметки вы пришли к выводу, что это стремление, а не одно из мнений? Всё же есть разница между заметкой, выражающей мнение, что что-то надо сделать, и готовыми уже введёнными белыми списками.
Программа, использующая UB, не является программой на языке Си. По сути вы хотите, чтобы компилятор Си компилировал программы, не написанные на языке Си.
Потому что ноль в знаменателе - UB, а программа на C/C++ не может пользоваться UB, компилятор вправе расчитывать на то, что программист предусмотрел, что ноля там не будет никогда. Поэтому сам факт наличия x в знаменателе чётко указывает на то, что нулю он не равен никогда.
Само собой, панику нельзя куда-то убрать, это было бы нарушением семантики языка. Как и сишный компилятор, компилятор раста просто следует правилам языка.
И язык С создавался как "переносимый ассемблер"... Я бы позволил такие вольности плюсам. Они, обычно, сильно дальше от аппаратуры. Но классическому, безплюсовому С... Это уже перебор.
Си - язык высокого уровня, далёкий от современного "железа". Ваши ожидания от него совершенно необоснованы и не совпадают с реальностью.
Число запусков 426 (на 13.12.2021): успешных 379, неудачных 27, частично неудачных 20.
Так и представляю: в спешке расстёгиваешь молнию, расчитывая облегчиться, а она зажёвывает волосы или того хуже кожу.
"Делайте правильно, неправильно не делайте" - универсальный совет на любую проблему в программировании. Вопрос в том, как иметь гарантию, что указатель ненулевой и избежать лишних проверок. gsl::not_null решает эту проблему в некоторой мере. Он всё равно не может сказать, не была ли память по указателю освобождена. Ссылки в расте же закрывают и этот момент.
Если мне нужно сохранить валидный указатель в поле класса, а потом поменять на другой указатель, ссылка не позволит это сделать. Удачи построить бинарное дерево на ссылках.
Нет, проблема в том, что нет типа "валидный указатель". В результате везде, где используется указатель, его необходимо проверять, вместо того чтобы проверить один раз и кастануть к типу "валидный".
Во-первых, SynthID - это и есть стеганография. Во-вторых, существуют методы, которые выдерживают сжатие в JPEG или, например, обрезку изображения.
Ну понятно, что со старым проектом только и остаётся баги чинить. Проблема в том, что реальный мир меняется. Поменяется сильно - вас выкинут вместе с проектом. Для стран такой подход не катит, что бы сидел правитель и старательно сохранял status quo государства, и всё отлично шло по накатанной.
Языки, ставящие совместимость с C++ во главу, уже есть, например Carbon. Вот только популярности они не набирают.
Интересно, как из заметки вы пришли к выводу, что это стремление, а не одно из мнений? Всё же есть разница между заметкой, выражающей мнение, что что-то надо сделать, и готовыми уже введёнными белыми списками.
И будут абсолютно правы. Как быстро проходит молодость, так же быстро должна проходить и власть.
Falcon Heavy с 27 двигателями?
Не отправляет.
А, ясно. В Норвегии ria.ru спокойно открывается.
Их точно именно Бельгия блокирует, а не Россия?
Программа, использующая UB, не является программой на языке Си. По сути вы хотите, чтобы компилятор Си компилировал программы, не написанные на языке Си.
Это защита от аппаратного сбоя, а не алгоритмического. Если писать некорректные программы, они сразу на всех компьютерах выдадут неверный результат.
Потому что ноль в знаменателе - UB, а программа на C/C++ не может пользоваться UB, компилятор вправе расчитывать на то, что программист предусмотрел, что ноля там не будет никогда. Поэтому сам факт наличия x в знаменателе чётко указывает на то, что нулю он не равен никогда.
Само собой, панику нельзя куда-то убрать, это было бы нарушением семантики языка. Как и сишный компилятор, компилятор раста просто следует правилам языка.
Неправда, отлично оптимизирует:
Си - язык высокого уровня, далёкий от современного "железа". Ваши ожидания от него совершенно необоснованы и не совпадают с реальностью.