double { return x + y; }; 我想做的是这样的(捕捉想-6ren">
gpt4 book ai didi

正文为 "dynamic"的 C++ lambda 表达式

转载 作者:搜寻专家 更新时间:2023-10-31 00:12:36 24 4
gpt4 key购买 nike

是否可以从外部设置 lambda 主体?

例子:

经典 lambda:

[](double x, double y) -> double { return x + y; };

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

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

[](double x, double y) -> double { return EXPRESSION_FROM_VARIABLE; };

基本上我想在编译时将字符串更改为“表达式”。

最佳答案

这在纯可移植的 C++11 中是不可能的。我想 EXPRESSION_FROM_VARIABLE 仅在运行时 已知(与您的伪代码不同)。如果它在编译时是静态已知的,使用一些宏技巧,生成(在构建时)一些中间 C++ 文件并#include 它,等等...

但是,您可能希望嵌入一些解​​释器(例如 GNU GuileLUA ),或使用 JIT compilation techniques (以及像 LLVMlibjitlibgccjitGNU lightningasmjit ……这样的库)甚至(就像我在 MELT 中所做的那样)生成 C++ 代码并 fork 其编译 -在运行时-进入一个插件和dlopen(3)那个插件等等。

您需要更多地了解编程语言、编译器和解释器。另见 this answer程序员上。

另请注意,您可以分配一些 std::function来自 lambda。

关于正文为 "dynamic"的 C++ lambda 表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29692887/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com