【发布时间】:2020-03-02 20:03:46
【问题描述】:
我试图弄清楚如何在其内部获取 lambda 函数的地址。这是一个示例代码:
[]() {
std::cout << "Address of this lambda function is => " << ????
}();
我知道我可以在变量中捕获 lambda 并打印地址,但我想在执行此匿名函数时就地执行此操作。
有没有更简单的方法?
【问题讨论】:
-
这只是出于好奇,还是您需要解决潜在的问题?如果存在潜在问题,请直接询问,而不是询问(对我们而言)未知问题的单一可能解决方案。
-
...有效地确认 XY 问题。
-
您可以将 lambda 替换为手动编写的仿函数类,然后使用
this。 -
“获取lamba 函数自身的地址”是解决方案,这是您狭隘地关注的解决方案。可能还有其他解决方案,可能会更好。但我们无法帮助您,因为我们不知道真正的问题是什么。我们甚至不知道您将使用该地址做什么。我所做的只是帮助您解决实际问题。
-
@Someprogrammerdude 虽然您所说的大部分内容都是明智的,但我认为问“如何才能完成 X?”没有问题。 X 这里是“从自身内部获取 lambda 的地址”。您不知道该地址将用于什么并不重要,在其他人看来,在未知代码库中可能可行或不可行的解决方案可能存在“更好”的解决方案并不重要(给我们)。一个更好的主意是简单地关注所陈述的问题。这要么可行,要么不可行。如果是,那么如何?如果不是,那么请提及它不是,并且可以提出其他建议,恕我直言。
标签: c++ c++11 lambda c++14 c++17