Dato il seguente semplice struct
modello variadic costruttore priorità
template <typename T>
struct A
{
A(T a) {}
template <typename ... Ts>
A(T a, Ts ... more) {}
};
int main()
{
A<int> a(1);
}
Qual è la garanzia che A(T a)
sarà chiamato al posto del costruttore modello variadic, e perché?
14.8.2.4 è di circa il confronto tra due modelli di funzione per vedere che è più specializzata. Ma una delle funzioni candidate in questo esempio non è affatto un modello di funzione. – aschepler
@aschepler Stai dicendo che il compilatore non deve arrivare fino a questo punto, perché avere una funzione non modello che è una corrispondenza perfetta significa che non è nemmeno necessario iniziare la risoluzione del modello. Sono d'accordo. Ci sarà un'altra sezione che copre questo. –