草庐IT

lambdaFunc

全部标签

C++ 将 lambda 函数保存为没有函数指针的成员变量以进行优化

我想用C++编写一个将lambda函数保存为成员变量的类。尽可能高效地做到这一点会很棒。例如,我阅读了这个线程Whycanlambdasbebetteroptimizedbythecompilerthanplainfunctions?因此我想避免使用函数指针。到目前为止,我最好的解决方案如下:templateclassLambdaClass{private:FlambdaFunc;public:LambdaClass(F&_lambdaFunc):lambdaFunc(_lambdaFunc){}};我会按如下方式使用这个类:autolambdaFunc=[](int_a)->int{

c++ - 为什么不对这些函数签名进行相同的处理?

我一定是误会了什么,因为我认为这两种情况是一样的:#includevoidfunction(){std::coutfuncPtrVec;std::vectorfuncVec;funcPtrVec.push_back(function);//WorksfuncVec.push_back(function);//WorksautolambdaFunc=[](){std::cout现在,在这两种情况下,我的编译器都说函数签名是相同的,voidfunction()和voidlambdaFunc()。我真的认为,当lambda函数不捕获任何东西时,它的行为就像一个自由函数,相同的签名似乎支持它。