Код: Выделить всё
auto ptr = make_unique();
// Works.
auto lambda = [p = move(ptr)] { };
// This does not compile.
std::function func = [p = move(ptr)] { };
< /code>
он пытается скопировать, а не перемещать, захват лямбда в функцию std :: function < /code>. Соответствующая ошибка: < /p>
copy constructor of '' is implicitly deleted because field '' has a deleted copy
constructor
std::function func = [p = move(ptr)] { };
< /code>
Пример здесь, похоже, сработает. < /p>
Обратите внимание, что ответ здесь просто повторяет пример на isocpp.org.shared_ptr s = move(ptr);
< /code>
Но это создает еще одну проблему, потому что мне нужно вызвать функцию, которая ожидает уникального_птра < /code> из моей лямбды, и я не могу преобразовать shared_ptr < /code> вернуться к уникальному_PTR Можно ли захватить уникальный_ptr в std :: function ?
Подробнее здесь: https://stackoverflow.com/questions/569 ... tdfunction