Opened 4 years ago

Closed 4 years ago

#900 closed ожидаются исправления (задача сдана)

ww #13

Reported by: Vavilov Mark Owned by: Дмитрий Свиридкин
Component: WW_array Version: 3.0
Keywords: Cc:

Description


Change History (6)

comment:1 Changed 4 years ago by Vavilov Mark

Component: HW #1 (BMP)WW_array

comment:2 Changed 4 years ago by Дмитрий Свиридкин

Owner: changed from Дмитрий Свиридкин to Vavilov Mark
Type: ожидается проверкаожидаются исправления
/home/dmis/DATA/WORKSPACE/cpp-labs/lab_13/check/lab_13/src/smoke_case.cpp: In function ‘int test()’:
/home/dmis/DATA/WORKSPACE/cpp-labs/lab_13/check/lab_13/src/smoke_case.cpp:53:1: warning: no return statement in function returning non-void [-Wreturn-type]
   53 | }
      | ^

зачем вам smoke_case.cpp, если main.cpp содержит ровно то же самое?

lab_13: /home/dmis/DATA/WORKSPACE/cpp-labs/lab_13/check/lab_13/src/main.cpp:13: void test_size_empty() [with T = int]: Assertion `!a1.empty()' failed.

статический массив не может быть пустым.

оператор присваивания через proxy имеет странную сигнатуру и делает что-то странное.

магическая константа 8.

проверьте a[i] = a[j];

содержимое proxy не должно быть доступно извне.

comment:3 Changed 4 years ago by Vavilov Mark

Owner: changed from Vavilov Mark to Дмитрий Свиридкин
Version: 1.02.0

comment:4 Changed 4 years ago by Дмитрий Свиридкин

Owner: changed from Дмитрий Свиридкин to Vavilov Mark
lab_13: /home/dmis/DATA/WORKSPACE/cpp-labs/lab_13/check/lab_13/src/main.cpp:29: void test_sizeof() [with T = bool]: Assertion `sizeof(my_array<bool, 60) == 8' failed.

fill для bool эффективно реализуется через memset

оператор присваивания теперь делает что-то еще более странное. Вы его точно тестировали? там всего 8 позиций по два варианта в каждую записать.

comment:5 Changed 4 years ago by Vavilov Mark

Owner: changed from Vavilov Mark to Дмитрий Свиридкин
Version: 2.03.0

comment:6 Changed 4 years ago by Дмитрий Свиридкин

Resolution: задача сдана
Status: assignedclosed

хорошая попытка, но

        bool operator[](std::size_t index) const noexcept {
            return data_[index / sizeof(bool_container_t)] & (1 << index % 8);
        }

это не работает и приводит к UB.
Вы index на 1 поделили вместо 8.

std::memset(data_, c, sizeof *this);
Эко вы лихо! sizeof(*this) может быть больше размера массива (из-за padding), а это вообще-то UB.


7

Note: See TracTickets for help on using tickets.