我想知道是什么[=]
?这是一个简短的例子
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);
Run Code Online (Sandbox Code Playgroud)
如何使用代码[]
而不是[=]
?
std::function<T (T)>
Run Code Online (Sandbox Code Playgroud)
意味着一个函数原型,它(T)
作为参数和返回类型T
?
tem*_*def 106
在[=]
你指的是部分捕获列表为lambda表达式.这告诉C++ lambda表达式中的代码被初始化,以便lambda获取它在创建时使用的所有局部变量的副本.这是必要的lambda表达式,以便能够参照factor
和offset
,它们是在函数内部的局部变量.
如果替换[=]
with []
,则会出现编译器错误,因为lambda表达式中的代码不知道变量offset
和factor
引用的内容.如果你这样做,很多编译器会给出很好的诊断错误信息,所以试试看看会发生什么!