
Aidar
09.05.2017
13:02:46
Ну е

Александр
09.05.2017
13:03:00
Вообще, знаете о чем был изначальный вопрос?)

Alexander
09.05.2017
13:03:19

Aidar
09.05.2017
13:03:48

Google

Evgeniy
09.05.2017
13:05:10
я б затемплейтил функции которые кастят к uint64_t и применяют bitwise operations

Andrei
09.05.2017
13:07:27
Если хочется еще и аккуратно и по-взрослому, то можно использовать std::aligned_storage и прочие c++11 штуки для работы с выравниванием, чтобы получать детерминированный layout своих объектов.

Alexander
09.05.2017
13:08:59

Александр
09.05.2017
13:09:48
А вопрос был следующий. Почему данный код: https://hastebin.com/juzuxulice.cpp
Даёт следующий результат: https://hastebin.com/awicijobag.cpp
Точнее не "почему?", а "как исправить этот UB?".

Andrei
09.05.2017
13:11:44
А BitRepresentation это что?

Antony
09.05.2017
13:14:43
> почему нельзя reinterpret_cast?
Потому, что alignment у short не равен alignment у long long. В итоге на x86 вы получите адовую просадку произаодительности, т.к. будете выполнять инструкцию над неверно выровненными данными. На ARM же ваше приложение просто упадёт.

Александр
09.05.2017
13:24:11

Evgeniy
09.05.2017
13:24:52
template<typename T>
flip_bit (uint_fast8_t bit_num, T data) {
return (T) ((uint_fast64_t)data ^ (1ull << bit_num));
}

Александр
09.05.2017
13:24:54

Andrei
09.05.2017
13:25:45

Berkus
09.05.2017
13:26:03

Google

Александр
09.05.2017
13:26:07

Berkus
09.05.2017
13:26:47
нет, битсет конструируется с фиксированным размером в битах
от 1 лонга до N

Andrei
09.05.2017
13:27:04

Александр
09.05.2017
13:28:01
Вы все отвечаете не на тот вопрос. Я знаю способы, как это реализовать. Мне интересно, почему конкретно этот способ даёт такое странное поведение

Berkus
09.05.2017
13:28:01
шаблонная магия наверное называется boost::dynamic_bitset
покажи свой BitRepresentation то уже

Александр
09.05.2017
13:28:44
https://hastebin.com/ohahoyaqik.cpp

Admin
ERROR: S client not available

Andrei
09.05.2017
13:30:10

Александр
09.05.2017
13:30:21

Evgeniy
09.05.2017
13:30:29

Andrei
09.05.2017
13:30:35
Зачем перевыделять да еще и динамически память?

Александр
09.05.2017
13:31:00

Andrei
09.05.2017
13:31:59
Храни ты в этой структуре СРАЗУ bitset нужного размера.

Evgeniy
09.05.2017
13:32:23

Google

Александр
09.05.2017
13:32:27