我自己研究C++ 11的特性,並識別移動語義並嘗試將它應用於至少每個處理容器或「更大」對象的函數。現在我發現了一些我想並行運行的任務,所以我會使用std :: future,但這些任務處理容器(在我的情況下返回一個容器)。 所以我有這樣的僞代碼:move-semantics和std :: future
std::future<container&&> c = std::async([]()->container&&{ /* stuff return a local container object */ });
,知道我問自己的壽命是如何控制的容器RVAL裁判的?如果我是正確的,並且在我調用c.get()之前完成任務,它將被存儲。存儲的值是否仍然包含可用對象?
這是否確保它的壽命?
std::future<container> c = std::async([]()->container&&{ /* same stuff --^-- */ });
container cc = std::move(c.get());
做'/ * stuff * /'創建'容器'作爲本地對象嗎? – 2014-09-10 10:23:22
'c.get()'已經返回一個'container &&',所以'container'中的'move' = ccd :: std :: move(c.get());'什麼也不做。 – nwp 2014-09-10 10:27:36
你可能不想爲你的lambda返回一個'container &&'。 – 2014-09-10 10:34:55