using intPtr = unique_ptr<int>;
void f(intPtr&& i) {}
Учитывая функцию, которая принимает unique_ptr&&
в качестве входных данных.
Моя цель - где-то сохранить этот ptr и вызывать эту функцию в будущем с тем же ptr.
Поэтому я попытался сохранить его в списке и реализовать f
как:
list<intPtr&&> l;
void f(intPtr&& i) {
if(*i == 5) l.insert(std::move(i));
else cout << *i;
}
Однако, когда я попытался посетить список и передать его функции f
, я получил use of deleted function ‘std::unique_ptr<_Tp, _Dp>::unique_ptr(const std::unique_ptr<_Tp, _Dp>&) [with _Tp = int; _Dp = std::default_delete<int>]’
void g() {
for(auto& x : l) {
*x += 3;
f(std::move(x));
}
}
int main() {
int x = 5;
intPtr up = make_unique<int>(x);
f(std::move(up));
g();
}
Пожалуйста, помогите решить эту ошибку. Как мне определить тип списка и как мне посетить unique_ptr && в списке.