lambda 表达式和右值引用是 C++11 的两个非常有用的特性。

lambda 表达式实际上会由编译器创建一个 std::function对象,以值的方式捕获的变量则会由编译器复制一份,在 std::function 对象中创建一个对应的类型相同的 const 成员变量,如下面的这段代码:
int main(){
std::string str = "test";
printf("String address %p in main, str %s\n", &str, str.c_str());
auto funca = [str]() {
printf("String address %p (main lambda), str %s\n", &str, str.c_str());
};
std::function funcb = funca;
std::function funcc;
funcc = funca;
printf("funca\n");
funca();
std::function funcd = std::move(funca);
printf("funca\n");
funca();
printf("funcb\n");
funcb();
std::function funce;
funce = std::move(funcb);
printf("funcb\n");
// funcb();
printf("funcc\n");
funcc();
printf("funcd\n");
funcd();
printf("funce\n");
funce();
// std::function funcf = funce;
return 0;
} 另外有需要云服务器可以了解下创新互联建站www.cdcxhl.com,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。