[=]在C++中是什么意思
What does [=] mean in C++?
我想知道[=]
做什么?以下是的一个简短示例
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
指的是什么。如果这样做,许多编译器都会给出很好的诊断错误消息,所以请尝试一下,看看会发生什么!
[=]
,也可以使用按引用传递的[&]
。
我会用注释来提供这些信息,但我的声誉太低了。
在cpp20中,现在不赞成使用[=],而是使用[=,this]。
更多信息请点击此处:https://isocpp.org/files/papers/p0806r2.html
正如本网站所述"该更改不会破坏原本有效的C++20代码,并且可能出现从C++17中断的最早修订是C++23;
因此,在使用cpp20时,可以这样使用它:
- [=]→[=,this]:按值的局部变量,按引用的类成员
- [=]→[=,*this]:按价值计算的一切
- [&]→[&,this]:引用的所有内容
- [&]→[&,*this]:(这将是不寻常的)
相关文章:
- 这个语法std::class<>{}(arg1, arg2) 在C++中是什么意思?
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- "类模板示例<int>;"语句对 C++11 是什么意思?
- 线应该是什么意思
- "CID"在AT+HTTPPARA= "CID" ,1中是什么意思
- 表达式"b=(b-x)&x"是什么意思?
- 这个表达是什么意思?
- 此代码验证公式是什么意思?
- 跟踪日志中的T.11803()是什么意思?
- 这个额外的关键字在这个 c++ 类声明中是什么意思?
- * 和 ** 在 C++ 函数声明中是什么意思?
- _T("xyz")是什么意思?
- #define Dbg(fmt,..) (0) 是什么意思? 警告:表达式无效
- 这行代码到底是什么意思?
- 在命名空间名称之前加上 :: 是什么意思?
- 从字符数组的元素中减去'a'是什么意思
- "friend"关键字在C++中是什么意思?
- 减法中的"0"是什么意思?
- 字符数组前面的加号是什么意思?
- 这里的字符串函数是什么意思