#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
Type: | ожидается проверка → ожидаются исправления |
---|
comment:2 Changed 4 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 1.0 → 2.0 |
comment:3 Changed 4 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
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
159 set_bit(*other.data_ & (1u << other.bit_));
проще set_bit(static_cast<bool>(other))
Note: See
TracTickets for help on using
tickets.
final?
final?
final?
с rvalue версией хорошо бы что-нибудь явно сделать
116 template<std::size_t N>
117
форматирование
120 *data_ |= x << bit_;
здесь происходит неявный integer promotion. Лучше сделать явный static_cast к беззнаковому типу.
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.