List> выдает ошибку использования удаленной функцииC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 List> выдает ошибку использования удаленной функции

Сообщение Anonymous »

Мне нужен список уникальных указателей на целые числа (мне нужны базовые массивы целых чисел из-за совместимости с MPI, они представляют собой буферы, которые отслеживаются на предмет выполненной работы). У меня есть обходной путь, но я хотел бы понять, что происходит

Код: Выделить всё

std::list const buf_send2 =
std::list{std::make_unique(this->buffersize)};
Не работает в качестве инициализатора в классе из-за

Код: Выделить всё

 /usr/include/c++/15.2.1/bits/new_allocator.h:191:11: error: use of deleted function ?
‘std::unique_ptr::unique_ptr(const std::unique_ptr&) [with _Tp = int; _Dp = std::default_delete]’

191 |         { ::new((void *)__p) _Up(std::forward(__args)...); }
|           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Я заранее знаю, сколько буферов мне нужно в этом случае (или, в частности, максимум), поэтому я могу просто использовать массив, но это раскрывает мои слабости как программиста C++, и я хотел попытаться понять, что происходит.
Это довольно просто работает с уникальными указателями, не являющимися массивами, можно ли перемещать уникальные указатели массива? Есть ли способ сделать это правильно?

Подробнее здесь: https://stackoverflow.com/questions/798 ... d-function
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»