带有"动态"主体的C++ lambda表达式

Mar*_*rry 2 c++ lambda

是否有可能从外面设置lambda体?

例:

经典lambda:

[](double x, double y) -> double { return x + y; };
Run Code Online (Sandbox Code Playgroud)

我想做的是这样的事情(为了捕捉想法,这不是工作代码):

const char * const EXPRESSION_FROM_VARIABLE = "x + y";

[](double x, double y) -> double { return EXPRESSION_FROM_VARIABLE; };
Run Code Online (Sandbox Code Playgroud)

基本上我想在编译时将字符串更改为"表达式".

Bas*_*tch 6

这在纯便携式C++ 11中是不可能的.我想这EXPRESSION_FROM_VARIABLE只是在运行时才知道(不像你的伪代码).如果在编译时静态知道,使用一些宏技巧,生成(在构建时)一些中间C++文件和#include它等...

但是,你可能想要嵌入一些解​​释器(例如GNU GuileLUA),或者使用JIT编译技术(以及像LLVM,libjit,libgccjit,GNU闪电,asmjit等......)或者甚至(就像我正在做的那样)在MELT中)生成C++代码并将其编译--at运行时 - 分为插件和dlopen(3)插件等.

您需要了解有关编程语言,编译器和解释器的更多信息.另见这个答案程序员.

另请注意,您可以std::function从lambda中分配一些.