目录
一、初始化捕获
二、C++14之前的替代方案1
三、C++14之前的替代方案2
一、初始化捕获
auto pw = std::make_unique<Widget>();
auto func = [pw = std::move(pw)]{ return pw->isValidated() && pw->isArchived(); };
二、C++14之前的替代方案1
原理:lambda表达式底层是一个重载()的类,所以手写这个;类就ok
class Func{
public:explicit Func(std::unique_ptr<int>&& ptr): pw(std::move(ptr)) {}bool operator()const {...}
private:std::unique_ptr pw;
};int main() {auto pw=std::make_unique<int>();auto func=Fun(std::move(pw));return 0;
}
三、C++14之前的替代方案2
auto pw=std::make_unique<int>();
auto func=std::bind([](const std::unique<int> &pw) {...}, std::move(pw));