C++中不熟悉的符号 [=]
Unfamiliar symbol [=] in C++
我正在使用SFML开发一款游戏,当我遇到一行我从未见过的代码时,我正在浏览一些教程。完整的内容是在SFML游戏开发中,但特定的符号是[=],这是代码的简化形式。
template <typename data_type, typename Function>
std::function<void(data_type1&)> foo(Function x)
{
return [=] (data_type1 y)
{
DoSomething(y);
};
}
我想我明白了代码的重点,但是等号周围的括号有什么意义?我没有在任何网站上找到提及它,除非我只是使用了糟糕的搜索词。
方括号表示 lambda 函数的捕获项。 如果您在其中输入=
,则表示自动捕获(按值)lambda 中使用的所有符号。 捕获意味着这些变量可以在 lambda 中使用,而不是函数参数。
假设您正在使用传递到 lambda 内部foo
的变量x
。 然后,x
的值将自动在 lambda 中捕获,并可通过相同的名称访问。 更明确的方法是指示要捕获x
:
[x] (data_type1 y)
{
DoSomethingElse(x, y);
};
在您的情况下,它没有任何效果,因为没有这样的符号。 更有可能的是,这是一种草率的编程实践,已被编写它的人采用。 或者有时需要它,这是一个复制粘贴的宿醉。
我应该补充一点,如果foo
和DoSomething
实际上是类中的方法,则可以使用它。 在这种情况下,=
将自动捕获this
,并解析为正确的调用DoSomething
相关文章:
- C4018:类内有符号、无符号不匹配
- 为函数定义符号不明确的指针参数
- 如何以精度换取速度来评估C++中两个向量的点积符号?(不特定于硬件)
- "我该如何展示cout<<"发烧";因为我不熟悉字符串数组,它也卡在选择部分?
- 我不熟悉C 语法
- Clang Linker说符号不确定
- Boost::python带有ACE,C++符号不明确
- 错误:"数组":符号不明确
- 警告 C4018:">=":VSC++ 2010 中的有符号/无符号不匹配
- 内联方法作为共享库的符号不可用
- 有符号/无符号不匹配,并且函数在转换为函数时不带2个参数
- 我的代码的第二部分没有运行,我不熟悉使用类
- 在一个不熟悉的大型软件项目中,我应该如何调试SIGFPE
- C++中不熟悉的符号 [=]
- 不熟悉C++语法,而我正在尝试用C++研究数据结构
- 断言(true)警告有符号/无符号不匹配
- 使用objcopy从共享库中剥离符号不会有任何作用
- C预处理文件中这些不熟悉的行是什么
- 警告 C4018:'>':有符号/无符号不匹配
- C++警告 C4018:"<":有符号/无符号不匹配