C++. unique_ptr и квадратные скобки
Эта штука работает:
int * CurrentData = Alloc().allocate(10);
CurrentData[0] = 5;
А эта нет:
std::unique_ptr<int> CurrentData = Alloc().allocate(10);
CurrentData[0] = 5;
Исправьте вторую чтоб они вели себя одинаково.
Ответы (1 шт):
Автор решения: αλεχολυτ
→ Ссылка
У шаблона std::unique_ptr есть специализация, которая принимает массивы. Там есть реализация operator[]. Поэтому в вашем случае скорее всего подойдёт такой вариант:
std::unique_ptr<int[]>
Это тип умного указателя, хранящего массив intов. Для освобождения памяти по умолчанию будет вызван оператора delete[] вместо delete для скалярной версии.