将lambda显式转换为函数指针

时间:2014-02-13 16:42:50

标签: c++11 lambda

我有一个遗留模板函数,我试图调用它,它具有一系列具有不同参数数量的函数指针的特化。我正在编写一个我自己的新模板函数,它采用一些任意类型的非捕获lambda并需要将它传递给另一个库。如果我直接执行此操作,则模板解析将失败。但是,如果我明确地将它转换为相关的函数指针类型,那么事情就可以了。

问题是如何让我的模板代码从lambda的类型中获取该函数指针类型,或强制显式转换而不显式引用该类型。

1 个答案:

答案 0 :(得分:7)

只需使用unary-plus将lambda转换为函数指针,如:

 auto* f = +[]{ std::cout << "Hello, world!\n"; }; // f is of type void (*)()