funciones examples c++ c++11 lambda

funciones - lambda examples c++



¿El inicializador lambda en línea puede capturar este puntero? (1)

¿Puede lambda de inicialización de miembros en línea capturar y usar this puntero?

struct A{ int a = 42; int b = [this](){ return this->a * 4; }(); };

¿Es válido el código C ++ 11 (según la especificación) o es solo una extensión GCC?

Si es válido, ¿por qué tengo que usar this-> al referirme al miembro a ?


¿Es válido el código c ++ 11?

No. Solo las lambdas en el ámbito de bloque pueden tener listas de captura:

C ++ 11 5.1.2 / 9 Una expresión lambda cuyo alcance envolvente más pequeño es un ámbito de bloque es una expresión lambda local ; cualquier otra expresión lambda no tendrá una lista de captura en su introductor lambda .

Así que parece que esta es una extensión de GCC. (Como se señaló en los comentarios, este es un tema abierto , por lo que bien podría convertirse en un día estándar).

¿Por qué tengo que usar this-> al referirme al miembro a?

No, al menos con la versión de GCC que estoy usando: http://ideone.com/K857VC .