Size: a a a

cxx.Дискуссионная

2020 May 26

O

Ofee in cxx.Дискуссионная
Artöm Bakri Al-Sarmini
Чтобы не плодить уб
УБ тут разумнее и уж куда ожидаемее, чем мусор в ограниченном наборе значений перечисления
источник

AB

Artöm Bakri Al-Sarmi... in cxx.Дискуссионная
Ofee
УБ тут разумнее и уж куда ожидаемее, чем мусор в ограниченном наборе значений перечисления
Зато его хуй обработаешь. Проверка в коде будет в любом случае
источник

O

Ofee in cxx.Дискуссионная
Artöm Bakri Al-Sarmini
Зато его хуй обработаешь. Проверка в коде будет в любом случае
Проверка должна быть возложена на один раз на сериализатор, который создаёт значение с типом перечисления, не на всю дальнейшую цепочку пользователей этого значения
источник

AB

Artöm Bakri Al-Sarmi... in cxx.Дискуссионная
Ofee
Проверка должна быть возложена на один раз на сериализатор, который создаёт значение с типом перечисления, не на всю дальнейшую цепочку пользователей этого значения
Если путь исполнения гарантирует, что s всегда 0 или 1, не делай проверку
источник

AB

Artöm Bakri Al-Sarmi... in cxx.Дискуссионная
А то, что внешние данные нужно проверять, негласная истина
источник

AB

Artöm Bakri Al-Sarmi... in cxx.Дискуссионная
Я и говорю, инструмента, который ты хочешь, пока нет в языке
источник

O

Ofee in cxx.Дискуссионная
Artöm Bakri Al-Sarmini
Читай полностью параграф про енам, он небольшой
The underlying type can be explicitly specified using an enum-base.
For a scoped enumeration type, the underlying type is int if it is not explicitly specified.
In both of these cases, the underlying type is said to be fixed.
Я не понимаю, о чём тут речь. Что стандарт подразумевает под
both of these cases
?
источник

O

Ofee in cxx.Дискуссионная
Artöm Bakri Al-Sarmini
А то, что внешние данные нужно проверять, негласная истина
Внешние данные — это int, unsigned int, char и прочие. Если у нас уже есть enum — мы уже провалидировали данные и они перестали быть внешними. Озаботиться проверками мы должны до каста в enum, а не после
источник

AB

Artöm Bakri Al-Sarmi... in cxx.Дискуссионная
Ofee
Внешние данные — это int, unsigned int, char и прочие. Если у нас уже есть enum — мы уже провалидировали данные и они перестали быть внешними. Озаботиться проверками мы должны до каста в enum, а не после
Так не проверяй. В описании апи напиши, что если аргумент невалидный Sex, тебе похуй
источник

O

Ofee in cxx.Дискуссионная
Artöm Bakri Al-Sarmini
Я и говорю, инструмента, который ты хочешь, пока нет в языке
Конечно же есть — UB, это самое место, куда более место, чем для неопределённого порядка вычисления аргументов
источник

AB

Artöm Bakri Al-Sarmi... in cxx.Дискуссионная
Ofee
The underlying type can be explicitly specified using an enum-base.
For a scoped enumeration type, the underlying type is int if it is not explicitly specified.
In both of these cases, the underlying type is said to be fixed.
Я не понимаю, о чём тут речь. Что стандарт подразумевает под
both of these cases
?
Если указан base (низлежащий тип) или енам scoped (то есть enum class)
источник

AB

Artöm Bakri Al-Sarmi... in cxx.Дискуссионная
Ofee
Конечно же есть — UB, это самое место, куда более место, чем для неопределённого порядка вычисления аргументов
Я имел в виду инструмент описания апи и валидации. Для обоих вещей уб - хуета, а не инструмент
источник

AB

Artöm Bakri Al-Sarmi... in cxx.Дискуссионная
Ofee
Конечно же есть — UB, это самое место, куда более место, чем для неопределённого порядка вычисления аргументов
Это не несет практического смысла. Ты с тем же успехом можешь выкинуть проверку и вставить __builtin_unreachable
источник

AZ

Alexander Zaitsev in cxx.Дискуссионная
ах как хорошо у хейтерка С++ полыхнуло, что на С++ можно писать безопасные программы
источник

AZ

Alexander Zaitsev in cxx.Дискуссионная
и чтобы их писать, их надо делать обязательно на Rust
источник

AZ

Alexander Zaitsev in cxx.Дискуссионная
так полыхнуло, что аж мут на месяц выписал мне
источник

AZ

Alexander Zaitsev in cxx.Дискуссионная
ух как хорошо :)))))
источник

AZ

Alexander Zaitsev in cxx.Дискуссионная
типичный растодрочер, кек. и со ссылкой на такие вот новости "качественные": https://www.chromium.org/Home/chromium-security/memory-safety
источник

AZ

Alexander Zaitsev in cxx.Дискуссионная
особенно мне нравится про то, что Chromium до сих пор разрешает использовать raw pointers и при этом жалуются на memory safety :)))))
источник

AZ

Alexander Zaitsev in cxx.Дискуссионная
это примерно как "Пишу на Rust везде unsafe, подскажите плиз, почему при работе с памятью мне ноги отрывает"?
источник