Size: a a a

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

2020 May 26

O

Ofee in cxx.Дискуссионная
Alexander Zaitsev
даёшь enum_cast в массы
Я его у себя и использую, чувствую себя прекрасно :)
источник

AZ

Alexander Zaitsev in cxx.Дискуссионная
Андрей
исключение будет бросать ?
уж как напишешь :)
источник

AZ

Alexander Zaitsev in cxx.Дискуссионная
Ofee
Я его у себя и использую, чувствую себя прекрасно :)
у меня аналогично :)
источник

AZ

Alexander Zaitsev in cxx.Дискуссионная
> но unspecified value звучит не лучше UB

оооо, ну всё
источник

AZ

Alexander Zaitsev in cxx.Дискуссионная
ЧТО ЭТО ЗНАЧИТ НЕ ЛУЧШЕ
источник

AZ

Alexander Zaitsev in cxx.Дискуссионная
=)))
источник

O

Ofee in cxx.Дискуссионная
Андрей
исключение будет бросать ?
Отвратительно. А вообще, уже есть magic_enum::enum_contains<E>(value), проверяй. Если нужно непременно кастить — там есть enum_cast, исключение бросит std::optional при доступе к несуществующему значению
источник

А

Андрей in cxx.Дискуссионная
Alexander Zaitsev
уж как напишешь :)
а как, не хакая компилятор, проверить, что значение является корректным для енама?
источник

AZ

Alexander Zaitsev in cxx.Дискуссионная
Андрей
а как, не хакая компилятор, проверить, что значение является корректным для енама?
ну статические анализаторы проверяют ведь :)
источник

O

Ofee in cxx.Дискуссионная
Alexander Zaitsev
> но unspecified value звучит не лучше UB

оооо, ну всё
Нет, ты не понял смысла сообщения. Я не понимаю, как value вообще может быть unspecified в данном контексте?
источник

А

Андрей in cxx.Дискуссионная
Alexander Zaitsev
ну статические анализаторы проверяют ведь :)
ну это по сути llvm юзают
источник

AZ

Alexander Zaitsev in cxx.Дискуссионная
ну тип да :) кстати, а разве в компиляторах варна такого нет уже?
источник

AZ

Alexander Zaitsev in cxx.Дискуссионная
-Wenum-cast какой-нибудь
источник

AZ

Alexander Zaitsev in cxx.Дискуссионная
потому что я точно знаю, что такие ошибки отлавливаются автоматом
источник

O

Ofee in cxx.Дискуссионная
Андрей
а как, не хакая компилятор, проверить, что значение является корректным для енама?
Посмотри magic_enum. Хоть и использует компиляторные расширения, это таки я бы не назвал хаком... Классический такой метапрограмминг с отрывом ног
источник

А

Андрей in cxx.Дискуссионная
Ofee
Посмотри magic_enum. Хоть и использует компиляторные расширения, это таки я бы не назвал хаком... Классический такой метапрограмминг с отрывом ног
сейчас как раз смотрю
источник

p

polunin.ai in cxx.Дискуссионная
@zamazan4ik ты говорил что option дает оверхед. а умные указатели по типу shared_ptr, auto_ptr не дают?
источник

AZ

Alexander Zaitsev in cxx.Дискуссионная
polunin.ai
@zamazan4ik ты говорил что option дает оверхед. а умные указатели по типу shared_ptr, auto_ptr не дают?
shared_ptr - даёт. также как и в Rust
источник

Т8

Т-34 85 in cxx.Дискуссионная
polunin.ai
@zamazan4ik ты говорил что option дает оверхед. а умные указатели по типу shared_ptr, auto_ptr не дают?
unique_ptr не даёт
источник

AB

Artöm Bakri Al-Sarmi... in cxx.Дискуссионная
Т-34 85
unique_ptr не даёт
При передаче аргументом небольшой дает
источник