是否可以将带有capture的 lambda函数作为另一个lambda函数的参数传递?
int a=3;
auto func_1=[&]()->{a=4;};
auto func_2=[&]( ????? fParam ){ fParam(); }; //what is a proper ?????
func_2(func_1);
Run Code Online (Sandbox Code Playgroud)
(我想用它来做一些奇特的事情.)
感谢许多解决方案.我学到了很多东西.
在原始问题中,我忘了提到func_2也想要接收其他功能,例如func_2(func_1a),func_2(func_1b)等.
因此,decltype是原始问题的正确答案之一,但不能满足我的要求.
这auto
是为了:
auto func_2=[&](auto fParam ){ fParam(); };
Run Code Online (Sandbox Code Playgroud)
您的编译器必须至少具有C++ 14级语言支持.
编辑:使用C++ 11,以下似乎工作:
auto func_2=[&](decltype(func_1) fParam ){ fParam(); };
Run Code Online (Sandbox Code Playgroud)