将带捕获的lambda转换为函数指针

如果你和我一样,曾经苦苦寻找一种“lambda转换为函数指针”的方法,结果在你使尽浑身解数搜索后,发现网上的答案基本都是针对“不带捕获”的lambda。但是当你看到这篇文章的时候,
恭喜你!找到了。
将“带捕获的lambda”转换为函数指针的方法很简单,如下图:

将带捕获的lambda转换为函数指针_第1张图片

但是!!!
这种方法可能存在隐患,具体什么隐患?
我暂时也说不清,不过可以告诉你的是,之所以编译器默认可以将不带捕获的lambda转为函数指针,而不能将带捕获的lambda转为函数指针,是因为从根本上讲,带捕获的lambda被编译器解释成了对象,而不带捕获的lambda被解释为函数,是两种完全不同的概念!

你可能感兴趣的:(高效C++,c++,lambda,函数指针,经验分享)