9
我真的必須在lambda中封裝std :: move調用嗎?把std :: move裏面的lambda真的有必要嗎?
std::list<std::wstring> srcData = GetData(); // implementation not important
std::vector<std::wstring> dstData;
dstData.reserve(srcData.size());
std::transform(std::begin(srcData), std::end(srcData), std::back_inserter(dstData),
[](std::wstring& guid) -> std::wstring { return std::move(guid); });
srcData.clear();
我還是新的lambda表達式和右值引用,所以最初我想:
std::transform(std::begin(srcData), std::end(srcData),
std::back_inserter(dstData), &std::move<std::wstring>);
不工作。
我是否必須將這一舉動放在lambda表達式中,還是缺少明顯的東西?
你在做什麼試圖實現?在這種情況下,僅僅使用std :: copy或std :: vector dstData(srcData.begin(),srcData.end())是不夠的? –
kyku
2011-12-15 13:28:35
第二。另外,你在沒有使用lambda的地方嘗試做的事情就是獲取std :: move的返回值的地址,它的作用就像是臨時的。採取臨時地址總是一個壞主意。 – Bob 2011-12-15 13:31:41