Ошибка связана с тем, что future
является только перемещаемым , но не копируемым
for (auto p : futv)
- это попытка скопировать элементы из вектора. Вместо этого используйте следующие циклы, чтобы ссылаться на элемент вектора:
for (auto& p : futv)
или for (decltype(auto) p : futv)
Обычно идея может работать как упражнение, но обещания / фьючерсы на самом деле не подходят предназначен для этого. Проблема в том, что вы не можете повторно использовать элементы вашего массива для другого запуска. Таким образом, для реального использования очереди производитель-потребитель реализуются с использованием примитивов более низкого уровня: мьютексов, переменных состояния, атомики и т. Д. c.