【发布时间】:2021-05-01 14:36:01
【问题描述】:
所以我正在尝试执行以下操作
int x = 123;
myFunction(x, [](auto y) {
std::cout << y;
});
而myFunction被定义为
template <typename T>
void myFunction(T val, void(*callback)(T)) {
callback(val);
}
当尝试编译代码时,clang 给了我错误could not match 'void (*)(T)' against '(lambda at ...)'。我发现这是因为您无法从 lambda 推断类型。
这实际上没关系,因为我真正想要的是callback 的参数类型是从myFunction 的val 参数推导出来的类型。
所以我的问题简单地说是,是否有可能以某种方式排除callback 参数的推断,而只使用val 的推断类型?
【问题讨论】:
标签: c++ templates type-deduction