Opened 4 years ago
Closed 4 years ago
#890 closed ожидается проверка (задача сдана)
WW #13
Reported by: | Денис Лочмелис | Owned by: | Дмитрий Свиридкин |
---|---|---|---|
Component: | WW_array | Version: | 2.0 |
Keywords: | Cc: |
Description
1) Я сделал одно поле у my_array<bool>. Это позволило не делать конструктор и еще немного укоротить пару других функций, но главное - там есть законный constexpr! Правда, в задании сказано, что полей быть не должно... В общем, если надо, я уберу, но попробовать хочу так.
2) Valgrind говорит мне "Conditional jump or move depends on uninitialised value(s)". Я долго пытался понять, в чем дело, но так и не смог. Впрочем, все работает.
3) Осознанный const_cast.
Change History (4)
comment:1 Changed 4 years ago by
Owner: | changed from Дмитрий Свиридкин to Денис Лочмелис |
---|---|
Type: | ожидается проверка → ожидаются исправления |
comment:2 Changed 4 years ago by
Owner: | changed from Денис Лочмелис to Дмитрий Свиридкин |
---|---|
Type: | ожидаются исправления → ожидается проверка |
Version: | 1.0 → 2.0 |
exceptions: fixed
присваивание прокси: fixed
деление с плавающей точкой: fixed
статическое поле: understand
fill через memset: fixed
8: fixed
неинициализированная data: fixed
comment:4 Changed 4 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
static constexpr size_t BYTE_SIZE = 8; static constexpr size_t data_size = N / 8 + ((N % 8) ? 1 : 0);
Только что дали константе имя и сразу же про него забыли.
9.8
Оператор присваивания через proxy работает неверно.
Проверьте все 4 возможных варианта.
static_cast<size_t>(std::ceil(N / 8.0))
Зачем тут деление с плавающей точкой и округление? Это выполяняется в целых числах.
Появление статического константного поля никак не влияет на конструктор.
byte data[data_size]
-- в качестве data_size может выступать любое constexpr выражение над N (byte data[N / 8 + (N % 8) ? 1 : 0]
)fill для bool стоит реализовывать через memset.
void fill(T val) {
нужна константная ссылкамагическая константа 8.
Нет, не работает.
byte data[N] -- массив неинициализированных байтов. Над которыми вы начинаете вычислять битовые операции и получаете новые неинициализированные bool в качестве аргументов других функций.