我有一个遗留模板函数,我试图调用它,它具有一系列具有不同参数数量的函数指针的特化。我正在编写一个我自己的新模板函数,它采用一些任意类型的非捕获lambda并需要将它传递给另一个库。如果我直接执行此操作,则模板解析将失败。但是,如果我明确地将它转换为相关的函数指针类型,那么事情就可以了。
问题是如何让我的模板代码从lambda的类型中获取该函数指针类型,或强制显式转换而不显式引用该类型。
答案 0 :(得分:7)
只需使用unary-plus将lambda转换为函数指针,如:
auto* f = +[]{ std::cout << "Hello, world!\n"; }; // f is of type void (*)()