В нашей кодовой базе есть шаблон
template<typename DT>
void f(const DT&) {}
с некоторыми специализациями. Одна из специализаций:
template<>
void f(const int*&) {}
Когда я пытаюсь его использовать, clang дает мне
error: no function template matches function template specialization 'f'
void f(const int*&) {}
note: candidate template ignored: cannot deduce a type for 'DT' that would make 'const DT' equal 'const int *'
void f(const DT&) {}
Пример кода:
template<typename DT>
void f(const DT&) {}
template<>
void f(const int*&) {}
int main() {
const int *a = nullptr;
f(a);
}
Почему невозможно специализировать этот шаблон для типа указателя? Как мне получить специализацию?