Почему не срабатывает явная специализация шаблона?

Вот код:

#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).


Ответы (0 шт):