我想知道是什么[=]
?这是一个简短的例子
template <typename T>
std::function<T (T)> makeConverter(T factor, T offset) {
return [=] (T input) -> T { return (offset + input) * factor; };
}
auto milesToKm = makeConverter(1.60936, 0.0);
该代码如何与[]
代替一起使用[=]
?
我认为
std::function<T (T)>
是指(T)
作为参数和返回类型获取的函数原型T
?
在[=]
你指的是部分捕获列表为lambda表达式。这告诉C ++,lambda表达式内的代码已初始化,以便lambda获得创建时使用的所有局部变量的副本。为了使lambda表达式能够引用factor
和offset
,这是函数内部的局部变量,这是必需的。
如果更换[=]
用[]
,你会得到一个编译器错误,因为lambda表达式中的代码将不知道什么变量offset
和factor
参考。如果这样做,许多编译器会给出良好的诊断错误消息,因此请尝试一下,看看会发生什么!
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句