我想知道是什么[=]?这是一个简短的例子
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引用的内容.如果你这样做,很多编译器会给出很好的诊断错误信息,所以试试看看会发生什么!
| 归档时间: |
|
| 查看次数: |
13944 次 |
| 最近记录: |