c++ - C++模板函数创建问题
问题描述
我编写了带有 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*
推荐阅读
- python - 如何将元音字母之后的字母附加到列表中?
- c# - .net 核心 wpf 应用程序,用于下载视频流并在数据到达后立即处理
- reactjs - 使用 socket.io 将新的数组更改应用到 useEffect 并更改流
- go - 将 WireGuard 嵌入到 Windows 上的 Go 应用程序中
- palantir-foundry - 如何将许多不同的模式合并到一个输出中,以便以后可以动态旋转?
- authentication - 将加密密码保存在 json Web 令牌中是否安全?
- google-chrome - 使用 declarativeNetRequest 进行动态重定向
- react-hook-form - react-hook-form 和 reactstrap:如何为 reactstrap 传递 ref
- material-ui - 如何使用 MUI5 断点指定方向
- python - 查找并发运行事务的总“等待”时间