我有 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/