Opened 4 years ago

Closed 4 years ago

Last modified 4 years ago

#920 closed ожидается проверка (задача сдана)

WW #13

Reported by: sukhodolskiy.maksim Owned by: Sokolov Viacheslav
Component: WW_array Version: 2.0
Keywords: Cc:

Description


Change History (4)

comment:1 Changed 4 years ago by Sokolov Viacheslav

Type: ожидается проверкаожидаются исправления

13 class my_array

final?

80 class my_array<bool, N>

final?

84 struct proxy

final?

92 proxy &operator=(const proxy &other) noexcept;

с rvalue версией хорошо бы что-нибудь явно сделать

116 template<std::size_t N>
117
форматирование

120 *data_ |= x << bit_;
здесь происходит неявный integer promotion. Лучше сделать явный static_cast к беззнаковому типу.

89 explicit proxy(uint8_t *data, std::size_t bit);
90
91 proxy &operator=(bool x);

noexcept?

127 bool x = *other.data_ & (1u << other.bit_);
128 *data_ &= ~(1u << bit_);
129 *data_ |= x << bit_;
130 return *this;
Эта реализация копирует две другие (operator=(bool) и operator bool()). Можно переиспользовать код.

157 std::string indexString = std::to_string(index);
158 std::string sizeString = std::to_string(N);
159 throw std::out_of_range("Index " + indexString + " is out if range in array of size " + sizeString + ".");
код генерации исключения дублируется 4 раза. Можно сделать функцию throwOutOfRange(index, size) или даже checkThrowOutOfRange(index, size).

На самом деле (почти) все методы можно пометить как constexpr.

comment:2 Changed 4 years ago by sukhodolskiy.maksim

Type: ожидаются исправленияожидается проверка
Version: 1.02.0

comment:3 Changed 4 years ago by Sokolov Viacheslav

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

checkThrowOutOfRange можно было не делать функцией класса, а поместить в уникальное пространство имен, например array_details

231 char compressedValue = 0;
232 if (val) {
233 compressedValue = static_cast<char>(255);
234 }
проще val ? 0 : 255
memset принимает int

comment:4 Changed 4 years ago by Sokolov Viacheslav

159 set_bit(*other.data_ & (1u << other.bit_));
проще set_bit(static_cast<bool>(other))

Note: See TracTickets for help on using tickets.