模板函数可以推导出lambda的参数吗?

时间:2017-11-13 00:19:43

标签: c++ lambda metaprogramming function-pointers c++17

带有函数指针的模板化函数可以推导出该函数指针的参数,如下所示:

CharConverter

你可以用lambda作为参数吗? 不诉诸template<class... Args> void func(void (*ptr)(Args&& ...)) { //Do something useful knowing the Args... } 或编写类似函数的元编程特征类?即使用函数推断出参数。

1 个答案:

答案 0 :(得分:5)

不,那是不可能的。模板参数推导只能推导出参数类型“组成”部分的类型,常量和模板,例如,如示例中那样从void推导出Args...void(*)(Args&&...),或者从T推断出NT(&)[N]。它无法推断出类型中没有出现的任何内容。

对于非多态lambda类型T&T::operator()的类型包含有关lambda参数类型的可推导信息。但是T本身并没有。

相关问题