170 похожих чатов

Std::Variant не вариант?

17 ответов

20 просмотров

Я хотел попроще сделать, без лишних оберток и инклюдов

union move_ty { bitset <2> bs2; bitset <3> bs3; bitset <4> bs4; bitset <5> bs5; }; Это ты считаешь проще ? У тебя этот тип хранит от 2 до 5 бит. Это же может хранить std::bitset <5> Кроме этого, у тебя там UB - надо сначала что-то записать в один из членов UNION, только потом можно читать. Ты не пишешь.

Ilya Zviagin
union move_ty { bitset <2> bs2; bitset <3> bs3...

У меня поле класса 0м инициализируется

М
У меня поле класса 0м инициализируется

Это, возможно, тоже UB, но я не уверен. В любом случае, ты инициализируешь ОДИН член данных, а видимо читать хочешь из любого из них, в зависимости от вызова operator []

Ilya Zviagin
Это, возможно, тоже UB, но я не уверен. В любом с...

Такой вот небезопасный код, получается

М
У меня поле класса 0м инициализируется

Главное, не понятна сама идея. Вот если бы ты просто напихал туда 5 битиков - я б понял. Просто положил бы туда bitset<5> - я б понял. Тут -то какая идея, нахрена тут union ?

Ilya Zviagin
Это, возможно, тоже UB, но я не уверен. В любом с...

Ну, на самом деле, для битсета это не так страшно, просто более старшие биты будут нулями и все

М
Ну, на самом деле, для битсета это не так страшно,...

Ещё раз, ты не имеешь права читать ни один другой член union, кроме проинициализированного.

Ilya Zviagin
Ещё раз, ты не имеешь права читать ни один другой ...

Потому я и говорю тут будет вероятно UB и непонятные багт

Aniki Hi$ok@ 🌈 Z 🐀
я так делал, с простыми типами работало

Сейчас приедет полиция типобезопасного программирования же, аккуратнее

М
Сейчас приедет полиция типобезопасного программиро...

но действительно очень мерзкая тема, лучше тестами покрыть, что читается из такого union все правильно

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Вот еще странный косяк, подскажите как бороться. Я git clone сделал себе всего embassy и примеры там запускаю. Всё хорошо. Но вот решил в cargo.toml зависимости не как в приме...
Lukutin R2AJP
1
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Карта сайта