#include <iostream>
using namespace std;
int print(int i)
{
cout<<endl<<i;
}
template<typename ...Args>
inline void pass(Args&&...args)
{
}
template<typename ...args>
inline void expand(args&&... a)
{
print(a) ...; //this doesn't expand
//pass(print(a)...); this works
}
int main() {
expand(1,2,3,4);
return 0;
}
getta errore:parametro non pacchi ampliato con '...'
In function 'void expand(args&& ...)':
error: expected ';' before '...' token
print(a) ...;
^
parameter packs not expanded with '...':
print(a) ...;
^
Perché l'uso di questa funzione 'pass' è necessario?
parametro pacco è consentito fondamentalmente in cui è consentito un elenco separato da virgole. Esiste un numero fisso di contesti: elenchi di parametri di funzione, elenchi di parametri del modello, inizializzatori ecc. Un'espressione non è un contesto valido. Un operatore virgola non crea un elenco separato da virgole. –
Se SO chiede di aggiungere ulteriori dettagli, aggiungere ulteriori dettagli. Testo non fittizio Grazie. –