tworzę lambda tak:„Odśwież” obiekt lambda
int i = 0;
auto gen_lam = [=]() mutable -> int {return ++i;};
Skutecznie zlicza ile razy została nazwana, ponieważ przechowuje przechwycony i
. Czy istnieje sposób "rekonstrukcji" obiektu, aby zaczął się on od wartości początkowej i
?
Coś wzdłuż linii:
decltype(gen_lam) gen_lam2;
takie, że następujące wyjścia kod 1 1
zamiast 1 2
std::cout << gen_lam() << std::endl;
decltype(gen_lam) gen_lam2;
std::cout << gen_lam2() << std::endl;
Dla prostoty i rozsądku, utworzę dla tego klasę zwykłego starego funktora. –
Chciałbym zapisać go w 'std :: function' i nienawidziłbym narzucać innego typu na osobę dzwoniącą/użytkownika mojej klasy – TeaOverflow
@TeaOverflow: Tak długo, jak dodatkowy narzut do usuwania typu jest akceptowalny ... – Deduplicator