Ahoj, může mi někdo poradit, podle čeho kompilátor posuzuje jaká specializace je specializovanější na kódu níže? Čekal bych, že podle typu objektu(X<int, int*, 10>) bude specializovanější ta poslední funkce. Kompilátor ale hlásí, že je to nerozhodně.
Podle jakých pravidel se tedy vybírá specializace?
Díky
template<class T, class U, int I> struct X
{ void f() { cout << "Primary template" << endl; } };
template<class T, int I> struct X<T, T*, I>
{ void f() { cout << "Partial specialization 1" << endl;
} };
template<class T> struct X<int, T*, 10>
{ void f() { cout << "Partial specialization 3" << endl;
} };
int main() {
X<int, int*, 10> f;
f.f();
}