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 .