C++11 lambdas y los corchetes [duplicate]

1 minuto de lectura

avatar de usuario de anhoppe
esperanza

Mirando esta muestra lambda:

[](int factor)->int{return factor*factor;}

¿Alguien puede explicarme qué es lo que corchetes frente a una expresión lambda de C++ 11 son buenos para?

  • Como un aparte, y no mencionado en las otras respuestas, el [] también haga que el análisis de que hay una expresión lambda aquí sea realmente fácil: imagine el contexto en el que puede tener una expresión lambda. ¿Te imaginas un contexto en el que sería válido tener un uso diferente de [ at the same point?

    – Yakk – Adam Nevraumont

    Mar 22, 2013 at 13:54

The square brackets specify which variables are “captured” by the lambda, and how (by value or reference).

Capture means that you can refer to the variable outside the lambda from inside the lambda. If capturing by value, you will get the value of the variable at the time the lambda is created — similar to passing a parameter to a function by value. If capturing by reference, you will have a reference to the actual variable outside the lambda (and you need to make sure it remains in scope).

Note that inside a class you can capture “this” and then call class methods as you would in a class method.

¿Ha sido útil esta solución?