Sappiamo che std::deque::front()
restituisce un riferimento a un primo elemento di deque. vorrei sapere se questo codice è sempre sicuro:Spostare un elemento da std :: deque in C++ 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
Ho provato questo codice usando gcc-4.9 e le opere, ma non so se possiamo considerare questo codice di sicurezza!
E 'quasi un codice valido. Quasi - perché non stai controllando il vuoto. Lo spostamento dell'elemento memorizzato è un'operazione sicura. – bobah
Rapporto typo: si usa 'lock()' su 'm' e' unlock() 'su' m_'. – Notinlist