Управление временем жизни объекта с помощью лямбды в C ++ - PullRequest
0 голосов
/ 23 января 2012

У меня есть следующий код (значительно упрощенный):

#include<functional>
std::function<int()> Count() {
    int x = 0;
    return [=]() mutable { return x++; };
}

std::function<int()> Negate(std::function<int()> x) {
    return [=]() { return -x(); };
}

int main() {
    std::function<int()> n;
    int z = 0;
    if (true) {
        auto c = Count();
        z = c();
        n = Negate(c);
        z = n();
        z = n();
    }
    z = n();
    z = n();
}

Моя проблема в том, что вызовы n работают только внутри оператора if.Как только if теряет область видимости, c уничтожается и n перестает работать.Есть ли разумный способ исправить это?Желательно неинвазивно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...