Ho il codice seguente:Come passare un riferimento attraverso un pacchetto di parametri?
#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);
}
Attualmente viene stampato 1000
, vale a dire, il nuovo valore di b
si perde da qualche parte. Immagino che sia perché foo
passa i valori nel pacchetto di parametri per valore. Come posso ripararlo?
Questo fallirà se 'a' è un rvalue, anche se questo dovrebbe essere semanticamente ammissibile. '&&' sarebbe meglio penso. – ildjarn
@ildjarn hai ragione. corretto il codice –
Si adatta perfettamente alle mie esigenze se viene usato '&&'. – p12