有没有办法打印C ++ lambda表达式并查看其表示的函数的文本表示形式?这是一个简单的例子,显示我的意思:
#include <iostream>
#include <functional>
const char *toString(const std::function<int(int)> &f)
{
// then a magic happens ...
return "if (...) { ... }";
}
int main(int argc, char **argv)
{
auto f1 = [=](int i){ if (i<5) {return 8*2;} else {return 2;} };
auto f2 = [=](int i){ if (i>3) {return i*i;} else {return 7;} };
std::cout << toString(f1) << "\n";
}
任何实现此目的的方法?
不,没有。 C ++是没有任何reflection的语言。无法实现这种功能。
[可能的解决方法包括将lambda源放在程序中的字符串文字中,或例如从程序中读取源文件。