Capturas de lambdas en C++
La lista de captura decide qué ve una lambda: copia privada con [base], acceso en vivo con [&total].
#include <vector>
int capture_demo() {
int base = 10;
int total = 0;
auto add_base = [base](int x) { return x + base; }; // copy of base
auto tally = [&total](int x) { total += x; }; // writes through
for (int n : std::vector<int>{1, 2, 3}) {
tally(add_base(n));
}
return total;
}
Cómo funciona
add_basecapturabasepor valor, así que lleva su propia copia del10adonde vaya.tallycapturatotalpor referencia y escribe directo en la variable local.- El for de rangos pasa cada elemento por ambas lambdas y deja la suma en
total.
Palabras clave y builtins usados aquí
autoforintreturn
El intento, en números
- Líneas
- 12
- Caracteres a escribir
- 289
- Tokens
- 91
- Ritmo de tres estrellas
- 70 tpm
Al ritmo de tres estrellas de 70 tokens por minuto, este intento toma unos 78 segundos.
Paso 2 de 3 en Funciones y lambdas; paso 11 de 27 en Fundamentos del lenguaje.