Promessas I: O que é uma closure?

Closures são funções que lembram seus ambientes léxicos. Um ambiente léxico é o escopo em que uma função foi declarada.

std::function<std::string()> parent(const std::string& value) {
  return [value]() { return value; };
}

auto remember = parent("remembers me");
remember(); // "remembers me"

Embora value pareça ter desaparecido depois que parent retorna, a função retornada ainda se lembra do seu valor.

  • Corrija a função greetingMaker fornecida para que ela retorne uma função que se lembre da saudação fornecida.
  • Quando essa função retornada recebe um nome, ela retorna "salutation, name".

Exemplo

auto greeting = greetingMaker("Hello");
greeting("James"); // "Hello, James"

Observações

Consulte a aba Recursos para saber mais sobre closures.