传递lambda作为模板参数(编译时间错误)VS std :: function(性能不佳)

时间:2016-08-20 08:40:25

标签: c++ templates lambda std-function

我想将带有捕获的lambda函数传递给另一个普通函数f

我发现只有两种选择: -

1。使用模板

直接传递lambda函数
template<typename Lam> f(Lam lam,  something) {...}

缺点:必须在标题中 - &gt;编译时间较慢

2。将lambda转换为std :: function

f(std::function<void(SomePointer*)> lam, something){...}

缺点:执行成本更高(我的情况为+ 100%,已优化)

我想将许多共享相同签名的lambda函数传递给f(适用于2) f是一个具有长代码的复杂函数。 (也适合2)。

问题

是否有任何技术可以从两种解决方案中获益?

此链接 Using lambda as an argument : std::function or template?含糊地说答案是否定的。

0 个答案:

没有答案