Проблема шаблонной функции C ++ с бетонированием - PullRequest
0 голосов
/ 14 марта 2019

я написал шаблонную функцию с 3 параметрами, T - тип массива, FUNC - функцию, которая возвращает и получает T в качестве параметра, и N в качестве размера массива.Я получаю сообщение об ошибке компиляции, почти ничего не говорящее: «Не удалось специализировать шаблон функции».

template<typename T,T* (*FUNC)(T), int N>
void process(T array[])
{
    for (int i=0;i<N;i++)
    {
        array[i] = FUNC(array[i]);
    }
}

int main()
{
    double a[] = { 1, 2, 3, 4 };
    process<double, sin, 4>(a); 
    for (auto x : a)
        std::cout << x << " "; // 0.841471 0.909297 0.14112 -0.756802
}

1 Ответ

2 голосов
/ 14 марта 2019

sin не соответствует второму параметру шаблона. Измените объявление функции на

template<typename T, T (*FUNC)(T), int N>
//                ^^ T, not T*
...