Я думаю, это делает то, что вы хотите.
for (auto& keyVal : myMap) {
future<void> f = async(launch::async, [&ptr = keyVal.second] () mutable {
ptr.reset();
});
listOfFutures.push_back();
}
Однако это плохая идея, поскольку данные, на которые указывает unique_ptr, могут быть удалены в любое время. Таким образом, вы должны просто использовать свою версию с std :: move.
EDIT: заявлено, что это плохая идея, как указано в комментариях