C++ 模板函数问题与创建

标签 c++ templates metaprogramming template-meta-programming

我编写了带有 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
}

最佳答案

sin 与第二个模板参数不匹配。将函数声明更改为

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

关于C++ 模板函数问题与创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55170987/

相关文章:

c++ - 如何在 C 中重现 C++ 类样式的 get 函数?

c++ - OpenMP 还原同步错误

c++ - 从 Objective C 调用 C++ 回调后如何释放桥接对象

c++ - <未解析的重载函数类型>

C++ 对可调用类型作为模板参数的约束

c++ - 错误 C4716 : must return a value, 由实际返回值的函数抛出

metaprogramming - 将引用的 Elixir 代码转换为代码字符串

c++ - 错误: no matching function for call to 'function namel'

c++ - 如何使用返回第 n 个元素的方法创建元组

java - 如何从我在运行时使用 ASM 动态创建的 Java 类中获取和使用类类型?