c++ - 奇怪的 C++ 语法

标签 c++ visual-c++ visual-studio-2003 lambda square-bracket

我有 8 年的编码经验,但我从未见过将运算符 [] 作为参数传递给函数定义。

例如下面的代码(来自一个开源项目):

bree::porder(m_root, [] (treenode* node) { delete node; }); 

在我的编码生涯中,我一直将 [] 定义为运算符重载器,而不是参数。

那么这个新语法意味着什么?

我使用的是 Visual Studio 2003 自带的编译器。我如何更改上面的代码以便它在 VS 2003 中编译?

最佳答案

那是一个 C++ lambda您可以用具有相同定义的函数对象替换代码。该链接显示了两个示例,一个使用 Functor,一个使用 lambda。

关于c++ - 奇怪的 C++ 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6805207/

相关文章:

c++ - QProcess 未启动

c++ - 为什么 C++ 编译器在这个简单的程序中不给予优先权(赋值下的递增运算符)?

c++ - 关于 swap() 操作的异常安全——这有什么问题?

C++ 如何在 directx 中制作 GUI?

c++ - 无法使用 CMake 的 Visual Studio 生成器链接到子库/内部库/嵌入式库

performance - 编译时间极其缓慢

c++ - 如何使用 VS2003 工具集从 VS11 中构建 C++ 项目?

javascript - 如果从 qresources 加载 html 文件,QWebView 不会加载任何外部资源

visual-studio - 如何在 Visual Studio 2005 和 2003 中设置非管理员开发