I have 8 years of coding experience, but I have never seen the operator []
passed as a parameter to the function definition.
For example, the following code (from an open source project):
bree::porder(m_root, [] (treenode* node) { delete node; });
Throughout my coding life, I have always defined []
as an operator overloader, not as a parameter.
So what does this new syntax signify?
I am using the compiler that comes with Visual Studio 2003. How can I change the above code so that it will compile in VS 2003?
That is a c++ lambda you could replace the code with a function object of the same definition. The link shows two examples one using Functor and one using a lambda.
As other answers have mentioned, its' a brand new syntax to support C++0x lambas. It is not supported in any version of Visual Studio prior to VS 2010, so to get that code snippet to work in VS 2003, you'll need to rejigger the code to use a function or functor object.
I think that something like the following might work for you:
It looks like the C++0x syntax for an anonymous function