Opened 4 years ago

Closed 4 years ago

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

WW #13

Reported by: Vladislav Nosivskoy Owned by: Дмитрий Свиридкин
Component: WW_array Version: 2.0
Keywords: Cc:

Description


Change History (3)

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

Owner: changed from Дмитрий Свиридкин to Vladislav Nosivskoy
Type: ожидается проверкаожидаются исправления
/home/dmis/DATA/WORKSPACE/cpp-labs/lab_13/check/lab_13/include/my_array.h:35:12: warning: implicitly-declared ‘constexpr lab_13::my_array<bool, 10>::array_bool_proxy::array_bool_proxy(const lab_13::my_array<bool, 10>::array_bool_proxy&)’ is deprecated [-Wdeprecated-copy]
   35 |    return *this;

У вас некорректные сигнатуры операторов присваивания при отсутсвии конструктора копий.

		operator bool() {
			return bool(pack >> index & 1);
		}

		bool operator<(const bool x) const {
			return bool(pack >> index & 1) < x;
		}

		bool operator==(const bool x) const {
			return bool(pack >> index & 1) == x;
		}

Операторы сравнения можно реализовать с помощью определенного оператора bool.

template<typename T, std::size_t N>
void my_array<T, N>::fill(const T& val) {
	for (std::size_t i = 0; i < N; ++i) {
		arr[i].~T();
		arr[i] = val;
	}
}

Нельзя вызывать деструктор, а потом использовать объект для вызова оператора присваивания.

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

(arr[index / 8] >> (index % 8) & 1); Вы уверены в приоритетах & и >> ?
Такая конструкция повторяется 4 раза -- для нее можно сделать отдельную функцию.

Для магической константы 8 стоит завести имя.

comment:2 Changed 4 years ago by Vladislav Nosivskoy

Owner: changed from Vladislav Nosivskoy to Дмитрий Свиридкин
Type: ожидаются исправленияожидается проверка
Version: 1.02.0

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

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

enum {sz = N / BLOCK_SIZE + (N % BLOCK_SIZE != 0)}; чтож вы на буквы жадничаете. К тому же у вас уже есть один size(). STORAGE_SIZE;


9.8

Note: See TracTickets for help on using tickets.