c++中lambda表达式的toString?

toString of lambda expressions in c++?

有什么方法可以打印 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 源放在程序中的字符串文字中,或者例如从程序中读取源文件。