Как передать ссылку через пакет параметров?

У меня есть следующий код:

#include <cstdio>

template<class Fun, class... Args>
void foo(Fun f, Args... args)
{
    f(args...);
}

int main()
{
    int a = 2;
    int b = 1000;

    foo([](int &b, int a){ b = a; }, b, a);
    std::printf("%d\n", b);
}

В настоящее время он печатает 1000 , то есть новое значение b где-то теряется. Я думаю, что это потому что foo передает параметры в пакете параметров по значению. Как я могу это исправить?

8
задан p12 1 February 2012 в 20:44
поделиться