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 для скалярной версии.

→ Ссылка