Arj*_*jun 8 c++ lambda visual-studio-2003 square-bracket visual-c++
我有8年的编码经验,但我从未见过运算符[]作为参数传递给函数定义.
例如,以下代码(来自开源项目):
bree::porder(m_root, [] (treenode* node) { delete node; });
Run Code Online (Sandbox Code Playgroud)
在我的编码生涯中,我总是定义[]为操作符重载程序,而不是参数.
那么这个新语法意味着什么呢?
我正在使用Visual Studio 2003附带的编译器.如何更改上面的代码以便在VS 2003中编译?
正如其他答案所提到的,它是一种支持C++ 0x lambas的全新语法.在VS 2010之前的任何版本的Visual Studio中都不支持它,因此要使该代码段在VS 2003中工作,您需要重新调整代码以使用函数或仿函数对象.
我认为以下内容可能对您有用:
// somewhere where it would be syntactically valid to
// define a function
void treenode_deleter(treenode* node)
{
delete node;
}
// ...
bree::porder(m_root, treenode_deleter);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
782 次 |
| 最近记录: |