是否有可能从外面设置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)
基本上我想在编译时将字符串更改为"表达式".
这在纯便携式C++ 11中是不可能的.我想这EXPRESSION_FROM_VARIABLE只是在运行时才知道(不像你的伪代码).如果在编译时静态知道,使用一些宏技巧,生成(在构建时)一些中间C++文件和#include它等...
但是,你可能想要嵌入一些解释器(例如GNU Guile或LUA),或者使用JIT编译技术(以及像LLVM,libjit,libgccjit,GNU闪电,asmjit等......)或者甚至(就像我正在做的那样)在MELT中)生成C++代码并将其编译--at运行时 - 分为插件和dlopen(3)插件等.
您需要了解有关编程语言,编译器和解释器的更多信息.另见这个答案的程序员.
另请注意,您可以std::function从lambda中分配一些.