typestar

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

  1. add_base captura base por valor, así que lleva su propia copia del 10 adonde vaya.
  2. tally captura total por referencia y escribe directo en la variable local.
  3. El for de rangos pasa cada elemento por ambas lambdas y deja la suma en total.

Palabras clave y builtins usados aquí

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.

Escribe este fragmento

Paso 2 de 3 en Funciones y lambdas; paso 11 de 27 en Fundamentos del lenguaje.

← Anterior Siguiente →