Size: a a a

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

2020 May 26

AB

Artöm Bakri Al-Sarmi... in cxx.Дискуссионная
polunin.ai
почти в любом вызове функций
Можешь небольшой пример сделать? На расте, си или плюсах
источник

AZ

Alexander Zaitsev in cxx.Дискуссионная
polunin.ai
почти в любом вызове функций
ахахахаха
источник

Т8

Т-34 85 in cxx.Дискуссионная
Artöm Bakri Al-Sarmini
Можешь небольшой пример сделать? На расте, си или плюсах
+
источник

Т8

Т-34 85 in cxx.Дискуссионная
Сколько раз дёргал функции, но не припоминаю, чтобы хоть раз мне такой кейс выстрелил
источник

KK

Kirill Kaymakov in cxx.Дискуссионная
polunin.ai
мне хватает UB в порядке вычисления аргументов в функции
Не поверишь, но так пишут... Да никто так не пишет
источник

O

Ofee in cxx.Дискуссионная
Artöm Bakri Al-Sarmini
Предположим. Мне непонятно, что есть range of the enumeration values
Где-то что-то было в стандарте про максимальное и минимальное значение элементов. Но для более сложного случая, вроде
enum Color { red = 0, blue = 2 };
Color color = static_cast<Color>(1);

я понятия не имею
источник

KK

Kirill Kaymakov in cxx.Дискуссионная
Еще
while(a--)

Можно встретить, но вот
func(a++, a++)

Практически нереально
источник

А

Андрей in cxx.Дискуссионная
Ofee
Где-то что-то было в стандарте про максимальное и минимальное значение элементов. Но для более сложного случая, вроде
enum Color { red = 0, blue = 2 };
Color color = static_cast<Color>(1);

я понятия не имею
тут же уб
источник

AZ

Alexander Zaitsev in cxx.Дискуссионная
Т-34 85
Сколько раз дёргал функции, но не припоминаю, чтобы хоть раз мне такой кейс выстрелил
+1
источник

AZ

Alexander Zaitsev in cxx.Дискуссионная
Kirill Kaymakov
Не поверишь, но так пишут... Да никто так не пишет
погоди, нам тут Rust продают. не сбивай цену
источник

p

polunin.ai in cxx.Дискуссионная
Artöm Bakri Al-Sarmini
Можешь небольшой пример сделать? На расте, си или плюсах
а, я неправильно прочитал
источник

O

Ofee in cxx.Дискуссионная
polunin.ai
мне хватает UB в порядке вычисления аргументов в функции
Пиши чистые функции и будет тебе счастье. Декремент такой не является
источник

KK

Kirill Kaymakov in cxx.Дискуссионная
Alexander Zaitsev
погоди, нам тут Rust продают. не сбивай цену
Так мне другая компания платит
источник

AZ

Alexander Zaitsev in cxx.Дискуссионная
Kirill Kaymakov
Так мне другая компания платит
опа, ща шарпы продавать будут :)
источник

O

Ofee in cxx.Дискуссионная
Андрей
тут же уб
А вот я не уверен. И тут уже @das_3sz3tt может быть прав, там очень сложно с точки зрения стандарта. Вот будь тут Color color = static_cast<Color>(-1) или Color color = static_cast<Color>(3) — точно UB...
источник

KK

Kirill Kaymakov in cxx.Дискуссионная
Alexander Zaitsev
опа, ща шарпы продавать будут :)
Ага
источник

/dev/urandon ¯\_(ツ)_... in cxx.Дискуссионная
Ofee
@das_3sz3tt, @urandon, таки нет, вот ответ, ссылающийся на стандарт и тот самый дефект-репорт. Интересующий нас пример в самом конце:
enum ColorUnfixed /* no fixed underlying type */
{
   red = 0x1,
   yellow = 0x2
}
Therefore, 100 would be outside the range of ColorUnfixed, and the static_cast would produce an unspecified value before CWG 1766 and undefined behaviour after CWG 1766.

Таким образом, для unscoped enum без явного указания нижележащего типа, тут unspecified value/UB.

Выглядит убедительно
Это ишью, какое решение по его принятию/решению?)
источник

AZ

Alexander Zaitsev in cxx.Дискуссионная
Ofee
А вот я не уверен. И тут уже @das_3sz3tt может быть прав, там очень сложно с точки зрения стандарта. Вот будь тут Color color = static_cast<Color>(-1) или Color color = static_cast<Color>(3) — точно UB...
даёшь enum_cast в массы
источник

А

Андрей in cxx.Дискуссионная
Alexander Zaitsev
даёшь enum_cast в массы
исключение будет бросать ?
источник

O

Ofee in cxx.Дискуссионная
/dev/urandon ¯\_(ツ)_/¯
Это ишью, какое решение по его принятию/решению?)
Дефект-репорт? Не знаю, я в стандарте правки не увидел этой, но unspecified value звучит не лучше UB, имхо. Я вообще не понимаю, что такое unspecified value
источник