<typename T>
void f(T, T) {
std::cout << 2;
}
template <>
void f(int, int) {
std::cout << 3;
}
int main() {
f(0, 0);
}
Почему в данном случае выведется 3
template <typename T, typename U>
void f(T, U) {
std::cout << 1;
}
template <>
void f(int, int) {
std::cout << 3;
}
template <typename T>
void f(T, T) {
std::cout << 2;
}
int main() {
f(0, 0);
}
А в этом случае выводится 2. Почему?
Полагаю что в обоих случаях выбирается перегрузка (T, T), как более строгая. Собственно в первом случае специализируется именно перегрузка (T, T), а во втором случае (T, U), однако выбирается всегда (T, T)
Обсуждают сегодня