Sintaxis extraña de C ++

Tengo 8 años de experiencia en codificación, pero nunca he visto al operador[] pasado como parámetro a la definición de la función.

Por ejemplo, el siguiente código (de un proyecto de código abierto):

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

A lo largo de mi vida de codificación, siempre he definido[] como un operador de carga, no como un parámetro.

Entonces, ¿qué significa esta nueva sintaxis?

Estoy usando el compilador que viene con Visual Studio 2003. ¿Cómo puedo cambiar el código anterior para que se compile en VS 2003?

Respuestas a la pregunta(3)

Su respuesta a la pregunta