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