Questo codice è ben formato? La dichiarazione del modello di funzione fornisce un errore sia in clang che in gcc anche se lo Ts
potrebbe essere vuoto.Espansioni di pacchetti multipli all'interno della classe con un numero fisso di argomenti modello
// error: too many template arguments for class template 'pair'
template<class I, class U, class... Ts>
void f(std::pair<I,U,Ts...>);
int main()
{
f(std::pair<int,int>());
}
La chiamata di funzione dà questo errore nel GCC, che non ha senso. Non v'è alcuna conversione a int
:
note: cannot convert 'std::pair<int, int>()' (type 'std::pair<int, int>') to type 'int'
Provate std :: tuple invece di std :: pair quando si usano più di 2 arg. –