它在第 13 行给出错误(没有函数模板“max5”的实例与参数列表匹配)。我不明白为什么,在我看来模板写的是正确的。
#include <iostream>
#include <array>
template <class T1, class T2>
T1 max5(T2* arr);
int main()
{
std::array<int, 5> array1 = { 1, 2, 5, 4, 10 };
std::cout << max5(&array1);
return 0;
}
template <class T1, class T2>
T1 max5(T2* arr) {
T1 value = 0;
for (int i = 0; i < 5; ++i) {
if (value < (*arr)[i])
value = (*arr)[i];
}
return value;
}
此外,如果你用它替换它
max5<int, std::array<int, 5>>(&array1);,一切都会正确显示。