У меня есть stl или boost контейнер хранящий std::unique_ptr. Как известно std::unique_ptr поддерживают только move симатику в связи с чем возникает вопрос, как вернуть перемещённый ранее в контейнер указатель?
#include <boost/circular_buffer.hpp>
...
using boost::circular_buffer;
...
int main() {
circular_buffer<unique_ptr<int>> cb(10);
std::mutex mut;
std::future async = std::async(std::launch::async, [&]() -> void {
while (true) {
std::this_thread::sleep_for(10ms);
std::lock_guard<std::mutex> lock(mut);
if (!cb.empty()) {
unique_ptr<int> tmp = cb.back(); // Как тут сделать так что бы был вызван move конструктор?
cout << "[" << *tmp << "]";
cb.pop_back();
}
}
1 + 1;
});
while (true) {
std::lock_guard<std::mutex> lock(mut);
unique_ptr<int> tmp = std::make_unique<int>(0);
cin >> *tmp;
cb.push_front(std::move(tmp));
};
return 0;
}
Достаточно выполнить move:
::std::unique_ptr<int> tmp{::std::move(cb.back())};
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Переустановив qt (звучит как прям история,minGW для qt на windows 64-bit(и не только)) и отогнав сомнения насчет minGW я захотел в qt creator написать hello world
Возникла проблема: не могу собрать проект использующий qt с помощью cmake (сам код верный, так как его можно собрать с помощью pro-fileМой cmake-файл:
В приложении имеется view с графиком, поверх которой располагается другая view, потомок SurfaceViewНа SurfaceView предполагается возможность рисования...