[=]在C ++中是什么意思?

der_lord:

我想知道是什么[=]这是一个简短的例子

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

templatetypedef:

[=]你指的是部分捕获列表为lambda表达式。这告诉C ++,lambda表达式内的代码已初始化,以便lambda获得创建时使用的所有局部变量的副本。为了使lambda表达式能够引用factoroffset,这是函数内部的局部变量,这是必需的。

如果更换[=][],你会得到一个编译器错误,因为lambda表达式中的代码将不知道什么变量offsetfactor参考。如果这样做,许多编译器会给出良好的诊断错误消息,因此请尝试一下,看看会发生什么!

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章