【发布时间】:2012-02-24 13:28:15
【问题描述】:
我有以下代码:
#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 按值传递参数包中的参数。我该如何解决?
【问题讨论】:
标签: c++ reference c++11 variadic-templates