我們知道std::deque::front()
返回對deque的第一個元素的引用。 我想知道,如果這個代碼始終是安全的:在C++中移動std :: deque中的元素11
//deque of lambdas
deque<function<void(void)>> funs;
// then is some other place:
// take a lock
m.lock();
auto f = move(funs.front()); // move the first lambda in f
funs.pop_front(); // remove the element from deque //now the value is hold by f
m_.unlock(); // unlock the resorce
f(); //execute f
我用gcc-4.9和作品嚐試這種代碼,但我不知道我們是否可以考慮這個代碼安全!
這幾乎是一個有效的代碼。幾乎 - 因爲你沒有檢查空虛。存儲的元素的移動是安全操作。 – bobah
錯字報告:在'm'上使用'lock()',在'm_'上使用'unlock()'。 – Notinlist