Почему не срабатывает явная специализация шаблона?
Вот код:
#include <print>
template<typename T> T larger(T a, T b);
template<> const int* larger(const int* a, const int* b);
int main() {
int small_int {19};
int big_int {11267434};
std::println("Max. of {} and {} is {}", big_int, small_int, *larger(&big_int, &small_int));
}
template<typename T> T larger(T a, T b) {
return a > b ? a : b;
}
template<> const int* larger(const int* a, const int* b) {
return *a > *b ? a : b;
}
Результат выполнения программы:
Max. of 11267434 and 19 is 19
Т. е. видно, что выполняется код самого верхнего шаблона, а не его специализации.
Система Windows 10 64bit, MinGW64 (GCC v14.2).