Biorąc pod uwagę następujący prosty struct
o zmiennej liczbie argumentów szablonu priorytet konstruktor
template <typename T>
struct A
{
A(T a) {}
template <typename ... Ts>
A(T a, Ts ... more) {}
};
int main()
{
A<int> a(1);
}
Jaka jest gwarancja, że A(T a)
będzie wywoływana zamiast zmiennej liczbie argumentów konstruktora szablonów i dlaczego?
14.8.2.4 jest porównaniem dwa szablony funkcyjnych zobaczyć, który jest bardziej wyspecjalizowana. Ale jedna z funkcji kandydata w tym przykładzie nie jest wcale szablonem funkcji. – aschepler
@aschepler Mówisz, że kompilator nie musi być tak daleko, ponieważ posiadanie funkcji bez szablonu, która jest idealna, oznacza, że nie trzeba nawet rozpoczynać rozdzielczości szablonu. Zgadzam się. Pojawi się kolejna sekcja, która to omawia. –