lambda表达式是C++11新引入的东西,给我们带来了很多的方便,使得代码简洁明了。
但是当我们把unique_ptr和lambda表达式结合的时候,错误就往往会出现,而且是致命的。
直接看看下面的代码:
#include "stdafx.h"
#include <memory>
#include <vector>
#include <algorithm>
class Message {
public:
Message() {}
};
int main(int argc, char* argv[])
{
std::vector<std::unique_ptr<Message>>messages;
for (int i = 0; i < 1000; i++) {
std::unique_ptr<Message> testMess;
messages.push_back(std::move(testMess));
}
std::for_each(messages.begin(), messages.end(),
[](std::unique_ptr<Message> testMess) {
// do something stupid
});
return